题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例1
输入: nums = [1,2,3,4]
输出: [1,3,2,4]
注: [3,1,2,4] 也是正确的答案之一。
题解
双指针
- 定义指针left指向0位置
- 定义指针right指向数组最后一位
- 如果left指针为偶数,right指针为奇数,根据题目要求,交换两个整数的位置
- 如果只有left为偶数,将right向左移动一位
- 如果只有left为奇数,将left向右移动一位
- 等到left >= right 停止
- 返回结果即可
代码
var exchange = function (nums) {
let left = 0
let right = nums.length - 1
while (left < right) {
if (nums[left] % 2 === 0 && nums[right] % 2 !== 0) {
;[nums[left], nums[right]] = [nums[right], nums[left]]
left++
right--
} else if (nums[left] % 2 === 0) {
right--
} else {
left++
}
}
return nums
}