给定一个非负整数数组 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 len = A.length; //长度
int[] res = new int[len];
int flag = 0; //标志位
for(int i=0;i<len;i++){
if(A[i] % 2 == 0){
res[flag++] = A[i];
}
}
for(int i=0;i<len;i++){
if(A[i] % 2 ==1 ){
res[flag++] = A[i];
}
}
return res;
}
}
法二:因为是偶数在奇数前面,所以定义两个指针left、right,left指向新数组首部,right指向尾部;当数组的数据是偶数时,赋给arr[left],然后l指针后移;奇数同理。
class Solution {
public int[] sortArrayByParity(int[] A) {
int len = A.length;
int[] res = new int[len];
int left = 0; //前指针
int right = len-1; //尾指针
for(int i = 0;i<len;i++){
if(A[i] % 2 ==0){
res[left++] = A[i];
}else{
res[right--] = A[i];
}
}
return res;
}
}