leetcode 905. Sort Array By Parity(按奇偶校驗排序陣列)--題解
阿新 • • 發佈:2018-12-11
題目描述
給定一個非負整數陣列 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
解題思路
首先判斷陣列的長度是否為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; }
歡迎各位大神指點