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

LeetCode 2335: Minimum Amount of Time to Fill Cups

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

基本資料
#

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

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

解題思路
#

每秒最多裝兩杯而且必須不同種類,所以兩個下限:至少 ceil(總數 / 2) 秒;而最多的那種一秒只能裝一杯,至少 max(amount) 秒。貪心地每次從最多的兩種各裝一杯(用 max-heap 模擬,Greedy),能剛好達到兩個下限中比較大的那個。

我的嘗試
#

一次 AC,就是上面這個公式。

正確解法
#

class Solution:
    def fillCups(self, amount: List[int]) -> int:
        return max(max(amount), (sum(amount) + 1) // 2)

複雜度
#

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

要特別避免的錯誤
#

  • 兩個下限都要考慮,取比較大的。

面試口說整理
#

每秒最多兩杯而且要不同種,所以至少要總數除以二向上取整秒;最多的那種一秒只能裝一杯,所以也至少要它的數量那麼多秒。每次從最多的兩種各裝一杯可以達到這個下限,答案是兩者的較大值。

相關文章

LeetCode 2099: Find Subsequence of Length K With the Largest Sum
·1 分鐘
LeetCode Easy Array Hash-Table Sorting Heap-Priority-Queue
LeetCode 2099 解題筆記:選出最大的 k 個數(連同 index),再按 index 排回原本的順序
LeetCode 1464: Maximum Product of Two Elements in an Array
·1 分鐘
LeetCode Easy Array Sorting Heap-Priority-Queue
LeetCode 1464 解題筆記:值都是正數,取最大的兩個數 a、b,答案是 (a - 1)(b - 1)
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 解題筆記:小孩和餅乾都排序,用最小的、夠大的餅乾滿足最小的小孩;兩個指標各走一次