每日一題20201112(922. 按奇偶排序陣列 II)
阿新 • • 發佈:2020-11-20
題目連結: 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