方法一:遍历法
将数组进行两次遍历,首先遍历一次将偶数放在新数组中,在遍历一次将奇数依次放在数组里。
代码如下:
class Solution {
public int[] sortArrayByParity(int[] nums) {
int n = nums.length;
int a = 0;
int[] b = new int[n];
for(int num :nums)
{
if(num % 2 == 0)
{
b[a++] = num;
}
}
for(int num:nums)
{
if(num % 2 == 1)
{
b[a++] = num;
}
}
return b;
}
}
方法二:双指针法
左指针从左到右遇到偶数遍历,右指针从右往左遇到奇数遍历。定义一个临时变量将左指针的数组赋予这个位置,再将右指针的数组赋予左指针的数组。从而达到前偶后奇的效果。
代码如下:
class Solution {
public int[] sortArrayByParity(int[] nums) {
int n = nums.length;
int l = 0,r = n -1;
while(l < r)
{
while(l < r && nums[l] % 2 == 0 )
{
l++;
}
while(l < r && nums[r] % 2 == 1)
{
r--;
}
if(l<r)
{
int temp = nums[l];
nums[l]=nums[r];
nums[r]=temp;
}
}
return nums;
}
}