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

LeetCode 3074: Apple Redistribution into Boxes

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

基本資料
#

難易度: easy 第一次嘗試:2024-03-10

  • 提交紀錄:Accepted(一次通過)

解題思路
#

同一包蘋果可以分到不同箱子,所以只要總容量夠就好。要箱子最少,就從容量最大的開始拿(Greedy 模板一),累積容量 >= 蘋果總數時停下。

我的嘗試
#

2024 年比賽時一次 AC,就是排序後由大到小累加。

正確解法
#

class Solution:
    def minimumBoxes(self, apple: List[int], capacity: List[int]) -> int:
        need = sum(apple)
        for i, c in enumerate(sorted(capacity, reverse=True), 1):
            need -= c
            if need <= 0:
                return i
        return len(capacity)

複雜度
#

時間 O(m log m),空間 O(m)。

要特別避免的錯誤
#

  • 蘋果可以拆開放,只看總量。

面試口說整理
#

蘋果可以拆開放,只看總容量,所以我把箱子由大到小排序,一個一個拿,累積容量夠裝所有蘋果就停下來。時間 O(m log m)。

相關文章

LeetCode 2335: Minimum Amount of Time to Fill Cups
·1 分鐘
LeetCode Easy Array Greedy Sorting Heap-Priority-Queue
LeetCode 2335 解題筆記:答案是 max(最多的那種, ceil(總數 / 2));模擬的話每秒從最多的兩種各裝一杯
LeetCode 2357: Make Array Zero by Subtracting Equal Amounts
·1 分鐘
LeetCode Easy Array Hash-Table Greedy Sorting
LeetCode 2357 解題筆記:每次操作會讓最小的正數那一群變成 0,所以次數就是不同的正數有幾種
LeetCode 1005: Maximize Sum Of Array After K Negations
·1 分鐘
LeetCode Easy Array Greedy Sorting
LeetCode 1005 解題筆記:每次把最小的數變號;最小的已經是正數時,剩下的次數只要看奇偶
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 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次
LeetCode 3075: Maximize Happiness of Selected Children
·1 分鐘
LeetCode Medium Array Greedy Sorting
LeetCode 3075 解題筆記:由大到小選 k 個,第 i 個選的會被扣 i,扣到 0 為止