题目描述
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
解题思路
- 双指针
- 首尾指针
- 首尾交换元素,遇到偶数交换,right指针向前移动
- 遇到奇数,left指针向后移动
解题代码(JavaScript)
var exchange = function (nums) {
// 左指针
let left = 0;
// 右指针
let right = nums.length - 1;
// 遍历元素,原地移动数组
while (left < right) {
if (nums[left] % 2 === 0) {
// 处理偶数情况
// let temp = nums[left];
// nums[left] = nums[right];
// nums[right] = temp;
[nums[left], nums[right]] = [nums[right], nums[left]];
right--;
} else {
// 处理奇数情况
left++;
}
}
return nums;
};