剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
输入:nums = [1,2,3,4] 输出:[1,3,2,4]

和力扣283. 移动零一样,抖音电商考过
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
输入: [0,1,0,3,12];输出: [1,3,12,0,0]

  1. // 双指针,前后遍历,时间On,空间O1
  2. func exchange(nums []int) []int {
  3. start, end := 0, len(nums)-1
  4. for start < end {
  5. for start < end && nums[start] %2 == 1 { // 正向遍历nums直到nums[start]为偶数
  6. start++
  7. }
  8. for start < end && nums[end] %2 == 0 { // 逆向遍历nums直到nums[end]]为奇数
  9. end--
  10. }
  11. nums[start], nums[end] = nums[end], nums[start]
  12. }
  13. return nums
  14. }
//移动零,当[i]=尾数了,a[j]开始都自动变为0就完事了
func moveZeroes(nums []int) {
    res := 0
    for i :=0 ; i<len(nums); i++ {
        if nums[i] != 0 {
            nums[res] = nums[i]
            res ++
        }
    }
    for i := res ; i<len(nums); i++ {
        nums[i] = 0
    }

}