给定一个非负整数数组 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
思路
有点像27题移除元素
使用一个辅助变量index,用来记录偶数末尾后一个位置
遍历整个数组
则nums[0, i]为当前遍历到的数组
nums[0, index - 1]为当前得到的全偶数数组
如果Nums[i]为偶数,则添加到全偶数数组末尾,由于本题不是删除,所以是和插入位作交换
具体代码:
class Solution {
//交换函数
public void swap(int[] A, int a, int b){
int t = A[a];
A[a] = A[b];
A[b] = t;
return;
}
public int[] sortArrayByParity(int[] A) {
int index = 0; //全偶数数组大小
for(int i = 0; i < A.length; i++){ //遍历原数组
if(A[i] % 2 == 0){ // 假如该项为偶数
swap(A, index, i); //和全偶数数组后一位数字交换
index++; //全偶数数组大小++
}
}
return A;
}
}
网友评论