1. 程式人生 > >leetcode 905. Sort Array By Parity(按奇偶校驗排序陣列)--題解

leetcode 905. Sort Array By Parity(按奇偶校驗排序陣列)--題解

題目描述

給定一個非負整數陣列 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

解題思路

首先判斷陣列的長度是否為1,是則直接返回原陣列;

然後確定左右兩個指標分別指向陣列的頭和尾元素,迴圈的條件是左指標小於右指標,當左指標指向元素是偶數時指標向右移動一位,當右指標指向元素是奇數時指標向左移動一位,當左指標指向奇數並且右指標指向偶數時交換兩個元素。

程式碼

public int[] sortArrayByParity(int[] A) {
    int n = A.length;
    if (n == 1) return A;
    int i = 0;
    int j = n - 1;
    while (i < j) {
        // 當左指標遇到奇數時停止
        if (A[i] % 2 == 0) {
            i++;
            continue;
        }
        // 當右指標遇到偶數時停止
        if (A[j] % 2 == 1) {
            j--;
            continue;
        }
        // 交換兩數
        int tmp = A[i];
        A[i] = A[j];
        A[j] = tmp;
        i++;
        j--;
    }
    return A;
}

歡迎各位大神指點