- 算法
- 1.双指针
- 2.一个指针在奇数位置上移动,一个指针在偶数位置上移动
- 3.每次移动到奇数位置上是偶数,偶数位置上是奇数,交换二者,继续移动
public int[] sortArrayByParityII(int[] A) {
int n = A.length;
int i = 0, j = 1;
while (i < n && j < n) {
while (i < n && (A[i] & 1) == 0) {
i += 2;
}
while (j < n && (A[j] & 1) == 1) {
j += 2;
}
if (i < n && j < n) {
swap(A, i, j);
}
i += 2;
j += 2;
}
return A;
}
private void swap(int[] A, int x, int y) {
int temp = A[x];
A[x] = A[y];
A[y] = temp;
} func sortArrayByParityII(A []int) []int {
n := len(A)
i, j := 0, 1
for i < n && j < n {
for i < n && (A[i] & 1) == 0 {
i += 2
}
for j < n && (A[j] & 1) == 1 {
j += 2
}
if i < n && j < n {
A[i], A[j] = A[j], A[i]
}
i, j = i + 2, j + 2
}
return A
} - 算法
- 1.奇数位置上放上奇数时,偶数位置上自动放好偶数
- 2.每次循环,一直和偶数位置上的数交换,直到该奇数位置上奇数为止
public int[] sortArrayByParityII(int[] A) {
int n = A.length;
int even = 0, odd = 1;
for (; even < n && odd < n; odd += 2) {
while ((A[odd] & 1) == 0) {
int temp = A[even];
A[even] = A[odd];
A[odd] = temp;
even += 2;
}
}
return A;
} func sortArrayByParityII(A []int) []int {
n := len(A)
even, odd := 0, 1
for ; even < n && odd < n; odd += 2 {
for (A[odd] & 1) == 0 {
A[even], A[odd] = A[odd], A[even]
even += 2
}
}
return A
}