↓快轉到主要內容
  1. LeetCode/

LeetCode 905: Sort Array By Parity

·1 分鐘· ·
LeetCode Easy Array Two-Pointers Sorting
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-09-25

  • 提交紀錄:Wrong Answer → Accepted ×2 → Runtime Error → Accepted ×3

解題思路
#

跟 LC 283 一樣(Two Pointers 模板五):left 是下一個偶數要放的位置,遇到偶數就交換到前面。

我的嘗試
#

第一版沒有回傳陣列;第二版用了沒定義的變數。

正確解法
#

class Solution:
    def sortArrayByParity(self, nums: List[int]) -> List[int]:
        left = 0
        for right in range(len(nums)):
            if nums[right] % 2 == 0:
                nums[left], nums[right] = nums[right], nums[left]
                left += 1
        return nums

複雜度
#

時間 O(n),空間 O(1)。

要特別避免的錯誤
#

  • 這題要回傳陣列。

面試口說整理
#

我用寫入指標把偶數依序交換到前面,奇數自然留在後面。時間 O(n)、空間 O(1)。

相關文章

LeetCode 922: Sort Array By Parity II
·1 分鐘
LeetCode Easy Array Two-Pointers Sorting
LeetCode 922 解題筆記:偶數位置的指標 i、奇數位置的指標 j,各自跳兩格;i 放錯(奇數)時讓 j 找到放錯的偶數再交換
LeetCode 455: Assign Cookies
·1 分鐘
LeetCode Easy Array Two-Pointers Greedy Sorting
LeetCode 455 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次
LeetCode 888: Fair Candy Swap
·1 分鐘
LeetCode Easy Array Hash-Table Binary-Search Sorting
LeetCode 888 解題筆記:交換 x 和 y 後總和相等,代表 y = x + (sumB - sumA) / 2;把 B 放進集合,逐一檢查 A 的 x
LeetCode 821: Shortest Distance to a Character
·1 分鐘
LeetCode Easy Array Two-Pointers String
LeetCode 821 解題筆記:左往右掃一次記錄到左邊最近的 c 的距離,右往左再掃一次取較小值
LeetCode 832: Flipping an Image
·1 分鐘
LeetCode Easy Array Two-Pointers Bit-Manipulation Matrix
LeetCode 832 解題筆記:每一列先左右反轉再把 0、1 互換;可以用左右指針同時做
LeetCode 747: Largest Number At Least Twice of Others
·1 分鐘
LeetCode Easy Array Sorting
LeetCode 747 解題筆記:掃一次找最大和第二大,最大 >= 2 × 第二大就回傳最大值的 index;用乘法避免除以 0