905. Sort Array By Parity

337 阅读1分钟

date: 2018/05/19 原文


1. Question

Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.

You may return any answer array that satisfies this condition.

Example 1:


Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:

1 <= A.length <= 5000
0 <= A[i] <= 5000

2. Solution

class Solution {
    public int[] sortArrayByParity(int[] A) {
       int len = A.length;
        int position = len - 1;
        for (int i = 0; i < A.length; i++) {
            if (A[i] % 2 != 0) {//奇数
                //找到最后的那个数
                while (position > i && A[position] % 2 != 0) { //奇数
                    position--;
                }
                if (position > i) {
                    //出现了偶数
                    int temp = A[i];
                    A[i] = A[position];
                    A[position] = temp;
                }
            }
        }
        return A;
    }
}

3. Think

思路: 让奇数与最后的偶数进行交换,for循环一遍,就置换了位置