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

LeetCode 2357: Make Array Zero by Subtracting Equal Amounts

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

基本資料
#

難易度: easy 第一次嘗試:2022-11-21

  • 提交紀錄:Runtime Error → Accepted

解題思路
#

每次減去目前最小的正數 x:所有等於 x 的都變成 0,比 x 大的數之間的差不變,所以不同的值不會合併。每種不同的正數需要剛好一次操作,答案是 len(set(nums) - {0})(Hash Table)。

我的嘗試
#

第一版寫成 len(set(nums)) - {0},括號位置錯了,整數減集合(TypeError)。改成 len(set(nums) - {0}) 就 AC 了。

正確解法
#

class Solution:
    def minimumOperations(self, nums: List[int]) -> int:
        return len(set(nums) - {0})

複雜度
#

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

要特別避免的錯誤
#

  • 0 不需要操作,要從集合裡拿掉。
  • 括號要包住整個集合運算:len(set(nums) - {0})。

面試口說整理
#

每次減去最小的正數,等於它的都變成 0,其他數之間的差不變,所以每種不同的正數剛好需要一次操作,答案就是不同的正數有幾種。時間 O(n)。

相關文章

LeetCode 1122: Relative Sort Array
·1 分鐘
LeetCode Easy Array Hash-Table Sorting Counting-Sort
LeetCode 1122 解題筆記:計數後先按照 arr2 的順序輸出,剩下的數由小到大接在後面
LeetCode 1005: Maximize Sum Of Array After K Negations
·1 分鐘
LeetCode Easy Array Greedy Sorting
LeetCode 1005 解題筆記:每次把最小的數變號;最小的已經是正數時,剩下的次數只要看奇偶
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 645: Set Mismatch
·1 分鐘
LeetCode Easy Array Hash-Table Bit-Manipulation Sorting
LeetCode 645 解題筆記:用總和算:missing = 1..n 的和 - set 的和,duplicate = 陣列總和 - set 的和
LeetCode 561: Array Partition
·1 分鐘
LeetCode Easy Array Greedy Sorting Counting-Sort
LeetCode 561 解題筆記:排序後相鄰兩個一組,每組的最小值就是偶數位置的數,加總
LeetCode 455: Assign Cookies
·1 分鐘
LeetCode Easy Array Two-Pointers Greedy Sorting
LeetCode 455 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次