LeetcodeSort Array By Parity II

时间:2020-01-21 19:36:22   收藏:0   阅读:77

这题做了一个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;
}

原文:https://www.cnblogs.com/chengxian/p/12222793.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!