给定一个非负整数数组 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
class Solution { public static int[] sortArrayByParity(int[] A) { int left=0; int right=A.length-1; while (left<right) { if (A[left]%2==1&&A[right]%2==0) { int temp=A[left]; A[left]=A[right]; A[right]=temp; left++; right--; } else if (A[left]%2==1&&A[right]%2==1) right--; else if (A[left]%2==0&&A[right]%2==0) left++; else { right--; left++; } } return A; } }
思路是双指针,从数组左边找到一个奇数,再从数组右边找到一个偶数,两数交换,知道两个指针相遇。