1. 程式人生 > >leetcode.905 按奇偶排序陣列

leetcode.905 按奇偶排序陣列

給定一個非負整數陣列 A,返回一個由 A 的所有偶數元素組成的陣列,後面跟 A 的所有奇數元素。

你可以返回滿足此條件的任何陣列作為答案。

示例:

輸入:[3,1,2,4]
輸出:[2,4,3,1]
輸出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也會被接受。

提示:

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

思路:

  從陣列末尾開始,如果碰到偶數不處理,碰到奇數,就和陣列末尾的 i 交換,將奇數交換到末尾去。用兩個指標,一個指標 j 遍歷陣列,一個指標 i 維護被換到末尾奇數的下標。

程式碼:

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int i = A.length-1;
        
        for(int j = A.length-1; j >=0; j--){
            if(A[j]%2 != 0){
                int temp = A[i];
                A[i] = A[j];
                A[j] = temp;
                i--;
            }
        }
        return A;
    }
}