Leetcode - 905 Sort Array By Parity (Easy)
题目描述:排序数组使得偶数在前,奇数在后。
Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.
解法一:额外数组
public int[] sortArrayByParity(int[] A) {
int[] res = new int[A.length];
int index = 0;
for (int i : A) {
if (i % 2 == 0) res[index++] = i;
}
for (int i : A) {
if (i % 2 == 1) res[index++] = i;
}
return res;
}
解法二:双指针
public int[] sortArrayByParity(int[] A) {
int left = 0, right = A.length - 1;
while (right > left) {
if (A[left] % 2 > A[right] % 2) {
int tmp = A[left];
A[left] = A[right];
A[right] = tmp;
}
if (A[left] % 2 == 0) left++;
if (A[right] % 2 == 1) right--;
}
return A;
}