给定一个非负整数数组 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 <= 50000 <= 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; } }