给定一个非负整数数组 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
思路与实现:
题目给的要求是将奇偶分开,每次寻找左边第一个奇数和右边第一个偶数,相互交换,直到两个index指针相遇即 i >= j
,说明已经将奇偶分开。
class Solution {
public int[] sortArrayByParity(int[] A) {
if(A == null || A.length == 0 || A.length == 1) return A;
int i = 0;
int j = A.length - 1;
while(i < j) {
while(i < j && A[i] % 2 == 0) ++i;
while(i < j && A[j] % 2 == 1) --j;
swap(A,i,j);
}
return A;
}
public void swap(int[] A, int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}