题目:
给定一个非负整数数组 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
思路:
双指针,一般用指针的都用while循环
代码:
class Solution {
public int[] sortArrayByParity(int[] A) {
int[] result=new int[A.length];
int start=0;
int end=A.length-1;
int i=0;
while(start<=end)
{
if(A[i]%2==0)
{
result[start]=A[i];
start++;
}else
{
result[end]=A[i];
end--;
}
i++;
}
return result;
}
}
另一种思路:
左指针寻找奇数,右指针寻找偶数,再进行交换。
class Solution {
public int[] sortArrayByParity(int[] A) {
int start=0;
int end=A.length-1;
while(start<end)
{
while(A[start]%2==0&&start<end)
{
start++;
}
while(A[end]%2!=0&&start<end)
{
end--;
}
int temp=A[start];
A[start]=A[end];
A[end]=temp;
}
return A;
}
}