905.按奇偶排序数组

按奇偶排序数组

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。

返回满足此条件的任一数组作为答案。

示例 1:

输入:nums = [3,1,2,4]
输出:[2,4,3,1]
解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。

示例 2:

输入:nums = [0]
输出:[0]

提示:

  • 1 <= nums.length <= 5000
  • 0 <= nums[i] <= 5000

解析

双指针,左指针找奇数,右指针找偶数,交换即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
var sortArrayByParity = function (nums) {
let left = 0, right = nums.length - 1;
while (left < right) {
while (left < right && nums[left] % 2 === 0) left++;
while (left < right && nums[right] % 2 === 1) right--;
if (left < right) {
[nums[left], nums[right]] = [nums[right], nums[left]];
left++;
right--;
}
}
return nums;
};

时间复杂度 O(n),空间复杂度 O(1),原地交换。


905.按奇偶排序数组
https://leetcode.lz5z.com/905.sort-array-by-parity/
作者
tickli
发布于
2024年12月10日
许可协议