Leetcode905 Sort Array By Parity

Posted 一只桃子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode905 Sort Array By Parity相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

leetcode905. Sort Array By Parity

Leetcode905 Sort Array By Parity

Leetcode 905. Sort Array By Parity

[leetcode][easy][Array][905][Sort Array By Parity]

C解905. Sort Array By Parity——LeetCode刷题

905. Sort Array By Parity