给你一个整数数组 nums
,将 nums
中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。
返回满足此条件的 任一数组 作为答案。
示例 1:
输入:nums = [3,1,2,4] 输出:[2,4,3,1] 解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。
示例 2:
输入:nums = [0] 输出:[0]
提示:
1 <= nums.length <= 5000
0 <= nums[i] <= 5000
class Solution {
public int[] sortArrayByParity(int[] nums) {
int n=nums.length;
if(n==1){
return nums;
}
int[] nums1=new int[n];
int j=0;
for(int i=0;i<n;i++){
if(nums[i]%2==0){
nums1[j]=nums[i];
j++;
}
}
int k=0;
for(int i=0;i<n;i++){
if(nums[i]%2!=0){
nums1[j+k]=nums[i];
k++;
}
}
return nums1;
}
}
首先判断数组长度是否为1,如果是,则直接返回原数组nums(第四到第六行中判断原数组是否长度为1的代码也可以不要,不影响结果,这里是写出来只是提醒做其他类似题目时记得考虑长度为1的情况);否则,定义一个与原数组nums长度相等的数组nums1,进行两次遍历,将nums中的偶数和奇数依次赋给nums1,定义整形变量“j”、“k”分别来记录偶数、奇数个数,这样可以在数组nums1中合适的位置插入,最后返回数组nums。