LeetcodeSort Array By Parity II

这题做了一个time limit exceeded

public int[] sortArrayByParityII(int[] A) {
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < A.length; i++)
list.add(A[i]);//list.add()返回的是boolean类型 即是否添加成功
for(int i=0;i<list.size();i++)
System.out.print(list.get(i)+" ");
System.out.println();
for (int i = 0, j = 1, k = 0; k < A.length; k++) {
if (list.get(k) % 2 == 0) {//发现得到的数是偶数
A[i] = list.get(k);
i += 2;
} else {
A[j] = list.get(k);
j += 2;
}
}
return A;
}

Solutions:

public int[] sortArrayByParityII(int[] A) {
int i=0,j=1,n=A.length;
while (i<n&&j<n){
while (i<n&&A[i]%2==0)
{
i=i+2;
} //该位置是偶数的话就一直skip 直到找到第一个在偶数位置的奇数
while (j<n&&A[j]%2==1){
j+=2;
}//该位置是奇数的话就一直skip 直到找到第一个在奇数位置的偶数
swap(A,i,j);
}
return A;
}
public void swap(int [] Array,int i,int j){
int temp=Array[i];
Array[i]=Array[j];
Array[j]=temp;
}

猜你喜欢

转载自www.cnblogs.com/chengxian/p/12222793.html