题目地址:https://leetcode-cn.com/problems/sort-array-by-parity/
给定一个非负整数数组 A,返回一个数组,在该数组中,A 的所有偶数元素之后跟着所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例:
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
提示:
1 <= A.length <= 5000
0 <= A[i] <= 5000
https://leetcode-cn.com/problems/sort-array-by-parity/
这道题没什么好说的,奇偶排序,偶数在前奇数在后,一个无序就给予我很大的方便,以为着不用考虑大小顺序问题。
因为我的爆破法接近双百,且评论区也没有接近双百的办法,所以这里只保留爆破法
一、爆破法
这里的爆破法其实就是双指针法,一个从前到后一个从后到前,前面指针遍历到单数则停下,后面遍历到双数则停下,然后交换位置即可。
执行结果如下:
285 / 285 个通过测试用例
状态:通过
执行用时: 1 ms
内存消耗: 38.6 MB
public int[] sortArrayByParityMe(int[] nums) {
int l = 0, r = nums.length - 1;
int temp;
while (l < r) {
while (nums[l] % 2 == 0 && l < r) l++;
while (nums[r] % 2 != 0 && l < r) r--;
if (l >= r) continue;
temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
}
return nums;
}
总的来说,这道题很简单,思路有点像快排,这里发现自己的思路越来越接近双百,感觉挺好的,就是不知道越来越接近官方答好不好,毕竟思维定型了可不是什么好事