「剑指 Offer 21. 调整数组顺序使奇数位于偶数前面」
- 定义双指针
- 左指针找偶数,右指针找奇数
- 交换左右指针的值
- 循环寻找
const exchange = nums => {
// 定义双指针
let [left, right] = [0, nums.length - 1];
while (left < right) {
// 奇数,继续向右找,直到找到偶数
while (left < right && nums[left] & 1) left++;
// 偶数,继续向左找,直到找到奇数
while (left < right && !(nums[right] & 1)) right--;
// 交换奇偶数
[nums[left], nums[right]] = [nums[right], nums[left]];
}
return nums;
};