https://leetcode.com/problems/sort-array-by-parity/
solution1
两个指针,相向而行
public int[] sortArrayByParity(int[] A) {
if (A == null || A.length < 2) {
return A;
}
int l = 0, r = A.length - 1;
while (l <= r) {
if (A[l] % 2 == 0) {
l++;
}
else if (A[r] % 2 != 0) {
r--;
}
else {
swap(A, l++, r--);
}
}
return A;
}
private void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
Solution2
两个指针,同向而行
public int[] sortArrayByParity(int[] A) {
if (A == null || A.length < 2) {
return A;
}
for (int l = 0, r = 0; r < A.length; r++) {
if (A[r] % 2 == 0) {
swap(A, l++, r);
}
}
return A;
}
private void swap(int[] array, int i, int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}