题目描述
解题思路
解题之前先看一下另外一题,可以比较一下解题思路
刷题|283. 移动零_JavaScript
- 利用左右指针,保证
left <=right
进行循环 - 如果
left
指向奇数,left+=1
,同理,如果right
指向偶数,right-=1
- 如果
left
指向偶数且right
指向奇数,则交换 - 最终返回数组
代码实现
/**
* @param {number[]} nums
* @return {number[]}
*/
var exchange = function(nums) {
let [left, right] = [0, nums.length-1];
while (left<=right) {
if (nums[left] % 2 === 1) {
left++;
} else if (nums[right] % 2 === 0) {
right--;
} else if ((nums[left] % 2 === 0) && (nums[right] % 2 === 1)) {
[nums[left], nums[right]] = [nums[right], nums[left]];
}
}
return nums;
};