LeetCode 922 按奇偶排序数组II
问题描述:
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。
对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。
你可以返回任何满足上述条件的数组作为答案。
示例:
- 输入:[4,2,5,7]
- 输出:[4,5,2,7]
- 解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
双指针
- 若当前 i 指向数字满足 A[i]%2==i%2 ,则继续向下遍历
- 若 A[i]%2!=i%2 ,则使用 j 从 i+1 开始向后寻找第一个满足 A[j]%2==i%2 的位置
- 替换 A[i]、A[j] ,继续使用 i 向后遍历
执行用时:10 ms, 在所有 Java 提交中击败了7.32%的用户
内存消耗:39.9 MB, 在所有 Java 提交中击败了81.19%的用户
class Solution {
public int[] sortArrayByParityII(int[] A) {
int i = 0, j = 0, tmp = 0;
while(i<A.length) {
if(i%2==A[i]%2) {
i++;
continue;
}
j = i+1;
while(j<A.length) {
if(A[j]%2==i%2) {
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
break;
}
j++;
}
i++;
}
return A;
}
}