题目描述
给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。
你可以返回满足此条件的任何数组作为答案。
示例:
输入:[3,1,2,4]
输出:[2,4,3,1]
输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
提示:
1 <= A.length <= 5000
0 <= A[i] <= 5000
题目比较简单,使用首尾指针
代码如下:
class Solution {
public int[] sortArrayByParity(int[] A) {
int start = 0;
int end = A.length -1;
while (end > start) {
//从前面找到第一个不是偶数的下标
while (A[start] % 2 == 0) {
start ++;
if(start > end){
return A;
}
}
//从后面找到第一个不是奇数的下标
while (A[end] % 2 != 0) {
end--;
if(start > end){
return A;
}
}
int tem = A[start];
A[start] = A[end];
A[end] = tem;
start ++;
end -- ;
}
return A;
}
}
排名靠前的代码
感觉差不多啊
class Solution {
public int[] sortArrayByParity(int[] A) {
int i = 0;
int j = A.length-1;
while(i<j) {
if(A[i]%2 > A[j]%2){
int tmp = A[j];
A[j] = A[i];
A[i] = tmp;
}
if(A[i]%2==0) {
i++;
}
if(A[j]%2!=0){
j--;
}
}
return A;
}
}