1. 程式人生 > 實用技巧 >每日一題20201112(922. 按奇偶排序陣列 II)

每日一題20201112(922. 按奇偶排序陣列 II)

題目連結: 922. 按奇偶排序陣列 II

思路

很簡單,搞懂問題的核心就行,假設現在有奇數在偶數位上,偶數在奇數位上。

那麼我們要做的就是,找到分別在對方位置上的數字,然後交換他們就行。
class Solution:
    def sortArrayByParityII(self, A: List[int]) -> List[int]:
        # 判斷陣列大小是否小於等於1,是則直接返回陣列
        if len(A) <= 1:
            return A
        # 定義2個指標,i指向第一個偶數位,j指向第一個奇數位
        i, j = 0, 1
        # 迴圈結束的條件是i或者j超出陣列範圍
        while i < len(A) and j < len(A):
            # i不是偶數位且j不是奇數位 直接交換,並把i j分別挪到下一個位置
            if A[i] % 2 == 1 and A[j] % 2 == 0:
                A[i], A[j] = A[j], A[i]
                i += 2
                j += 2
            # i不是偶數, j是奇數 那麼j去下一個位置
            elif A[i] % 2 == 1:
                j += 2
            # j不是奇數 i去下一個位置
            elif A[j] % 2 == 0:
                i += 2
            # i j位置都正確
            else:
                i += 2
                j += 2
        return A