题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
解题思路
- 双指针法,头尾各一个指针
- 头指针寻到奇数则继续,直到偶数
- 尾指针寻到偶数则继续,直到奇数
- 头偶尾奇交换,然后继续
- 直到头尾指针相遇
代码实现
func exchange(nums []int) []int {
left := 0
right := len(nums) - 1
for left < right {
for left < right && nums[left] % 2 != 0{
left++
}
for right > left &&nums[right] % 2 == 0{
right--
}
nums[left], nums[right] = nums[right], nums[left]
}
return nums
}