不管全世界所有人怎么说,我都认为自己的感受才是正确的。无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢的怎么也长久不了。
LeetCode:原题地址
题目要求
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例 1:
输入: nums = [1,2,3,4]
输出: [1,3,2,4]
注: [3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 500000 <= nums[i] <= 10000
思路
- 定义 left,right 双指针
- left 指针从左向右遍历,用于发现左侧偶数
- right 指针从右向左遍历,用于发现右侧奇数
- 交换左右指针数字,再重复此步骤
/**
* @param {number[]} nums
* @return {number[]}
*/
var exchange = function(nums) {
let left = 0, right = nums.length-1;
while(left < right) {
while(left< right && nums[left] % 2 == 1) left++;
while(left < right && nums[right] % 2 == 0) right--;
swap(nums, left, right);
}
return nums;
};
function swap(nums, i, j) {
let temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
}