905 按奇偶排序陣列

2021-10-03 03:59:56 字數 1175 閱讀 3566

給定乙個非負整數陣列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 <= 50000 <= a[i] <= 5000想法:

如果希望原地排序,可以使用快排,乙個經典的演算法。

演算法:

維護兩個指標 i 和 j,迴圈保證每刻小於 i 的變數都是偶數(也就是 a[k] % 2 == 0 當 k < i),所有大於 j 的都是奇數。

所以, 4 種情況針對 (a[i] % 2, a[j] % 2):

如果是 (0, 1),那麼萬事大吉 i++ 並且 j--。

如果是 (1, 0),那麼交換兩個元素,然後繼續。

如果是 (0, 0),那麼說明 i 位置是正確的,只能 i++。

如果是 (1, 1),那麼說明 j 位置是正確的,只能 j--。

通過這 4 種情況,迴圈不變數得以維護,並且 j-i 不斷變小。最終就可以得到奇偶有序的陣列。

class solution 

if (a[i] % 2 == 0) i++;

if (a[j] % 2 == 1) j--;

}return a;

}}

or:

class solution905 else if(a[left]%2==0&&a[right]%2==1)else if(a[left]%2==0&&a[right]%2==0)else

}return a;

}}

905 按奇偶排序陣列

題目 思路分析 這道題是讓我們調整給定的a陣列裡面的元素,把偶數放在前面,奇數放在後面,其實很簡單。1.定義兩個變數l和r,l從陣列第乙個元素開始往後走,r從陣列最後乙個元素開始往左走。2.需要用到迴圈,迴圈繼續條件是l3.兩個變數分別走,有4種情況。3.1.左邊元素是偶數,右邊元素是奇數,剛好符合...

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 a.length 50000 a i 5000 思...

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 也會被接受。思路 雙指標法 定義兩個指標,left指標指向陣列的第...