905-按奇偶排序数组

 

题目描述

给定一个整数数组 nums,将数组中的所有偶数元素移动到数组的前面,后跟所有奇数元素。

解决思路

使用双指针技巧,一个指针从数组开头向后移动,另一个指针从数组末尾向前移动。当左指针指向奇数、右指针指向偶数时,交换两个元素的位置,直到两个指针相遇为止。

算法代码

func sortArrayByParity(nums []int) []int {
    left, right := 0, len(nums)-1

    for left < right {
        if nums[left]%2 != 0 && nums[right]%2 == 0 {
            nums[left], nums[right] = nums[right], nums[left]
        }
        if nums[left]%2 == 0 {
            left++
        }
        if nums[right]%2 != 0 {
            right--
        }
    }

    return nums
}

本文遵守 Attribution-NonCommercial 4.0 International 许可协议。 Attribution-NonCommercial 4.0 International