题目
代码部分一(20ms)
class Solution {
public int[] sortArrayByParityII(int[] A) {
int tmp = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] % 2 != 0 && i % 2 == 0) {
tmp = A[i];
for (int j = i + 1; j < A.length; j ++) {
if (A[j] % 2 == 0 && j % 2 != 0) {
A[i] = A[j];
A[j] = tmp;
tmp = 0;
break;
}
}
}
else if (A[i] % 2 == 0 && i % 2 != 0) {
tmp = A[i];
for (int j = i + 1; j < A.length; j = j + 2) {
if (A[j] % 2 != 0) {
A[i] = A[j];
A[j] = tmp;a
tmp = 0;
break;
}
}
}
}
return A;
}
}
代码部分二(9ms 84.26%)
class Solution {
int temp=0;
public int[] sortArrayByParityII(int[] A) {
int index = 0,i = 0,j = 0;
for(;index < A.length; ++index){
if((index & 1) == 1) {
i = index;
j = index+1;
} else{
j = index;
i = index+1;
}
for(;i < A.length; i += 2) if((A[i] & 1) == 0) break;
for(;j < A.length; j += 2) if((A[j] & 1) == 1) break;
if(i < A.length && j < A.length) swap(A, i, j);
index = Math.min(i, j)+1;
}
return A;
}
public void swap(int[] A, int i,int j){
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
代码部分三(7ms 98.26%)
class Solution {
public int[] sortArrayByParityII(int[] A) {
int i = 0;
int j = 1;
int len = A.length;
while(i < len && j <len){
while(i < len && A[i] % 2 == 0)
i += 2;
while(j < len && A[j] % 2 == 1)
j += 2;
if(i >= len && j >= len) break;
int temp = A[i];
A[i] = A[j];
i += 2;
A[j] = temp;
}
return A;
}
}