码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode905 Sort Array By Parity

时间:2020-01-20 00:01:01      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:return   直接   list   temp   link   sort   解决   turn   时间   

public int[] sortArrayByParity(int[] A) {
LinkedList<Integer> list = new LinkedList<Integer>();
for (int i = 0; i < A.length; i++) {
if (A[i] % 2 == 0) {
list.add(A[i]);
}
}
for (int j = 0; j < A.length; j++) {
if (A[j] % 2 == 1) 
list.add(A[j]);
}
for (int k = 0; k < A.length; k++) {
A[k] = list.get(k);

}
return A;
}

只打败了百分之5的时间复杂度,而且需要O(n)的空间

方法解析里用到了位置交换,一开始也想到了原地置换,但是没想出来解决办法

dicuss里提出  从第一个元素开始遍历  是奇数的话直接跳过 是偶数的话 则和另一个浮标表示的奇数进行替换

因为前面遍历的时候 走过的都是奇数元素  后面直接把偶数元素换到前面就好了 然后奇数去了后面偶数的位置

偶数的前面都是奇数

这样就完成了替换

public int[] sortArrayByParity(int[] A) {
for(int i=0,j=0;j<A.length;j++){
if(A[j]%2==0){
int temp=A[j];
A[j]=A[i];
A[i]=temp;
i++;
}
}
return A;
}

这样的话只需要遍历一次 大大节省了时间

Leetcode905 Sort Array By Parity

标签:return   直接   list   temp   link   sort   解决   turn   时间   

原文地址:https://www.cnblogs.com/chengxian/p/12215920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!