剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例:
输入: nums = [1,2,3,4]
输出: [1,3,2,4]
注: [3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 500000 <= nums[i] <= 10000
方法一:将奇偶数分别加在数组开头和末尾
var exchange = function(nums) {
const res = [];
for (const num of nums) {
if (num % 2 === 0) {
//偶数的话就push到末尾
res.push(num);
} else {
//奇数的话加到开头
res.unshift(num);
}
}
return res;
};
方法二:双指针方法,两个指针对应的数字相互交换
function exchange(nums: number[]): number[] {
let l = 0;
let r = nums.length - 1;
while (l < r) {
//奇数情况
if (nums[l] & 1) {
l++;
continue;
} else if (!(nums[r] & 1)){ //偶数情况
r--;
continue;
}
[nums[l], nums[r]] = [nums[r],nums[l]];
}
return nums;
};