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

LeetCode 2391: Minimum Amount of Time to Collect Garbage

·1 分鐘· ·
LeetCode Medium Prefix-Sum String Array
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2025-07-15

  • 提交紀錄:Accepted ×2

解題思路
#

一次只能有一台車在動,所以總時間是所有車的時間相加,拆成兩部分:

  • 撿垃圾:每單位 1 分鐘,總共就是所有字串長度的和。
  • 開車:每台車只要開到自己那種垃圾最後出現的那一間,路程是 travel 的前綴和(Prefix Sum 模板四)。

我的解法
#

我當時邊掃邊為每台車累積「還沒付的路程」,遇到自己那種垃圾才把累積的加進答案;第二版把撿垃圾的時間改成最後一次加總。這裡整理成「最後出現位置 + 前綴和」:

class Solution:
    def garbageCollection(self, garbage: List[str], travel: List[int]) -> int:
        prefix = [0]
        for d in travel:
            prefix.append(prefix[-1] + d)
        last = {}
        for i, g in enumerate(garbage):
            for t in set(g):
                last[t] = i
        return sum(map(len, garbage)) + sum(prefix[i] for i in last.values())

複雜度
#

時間 O(總字元數 + n),空間 O(n)。

要特別避免的錯誤
#

  • 某種垃圾完全沒有時,那台車不用出發。
  • 車不用開到最後一間,開到自己那種垃圾的最後一間就好。

面試口說整理
#

總時間等於撿垃圾的時間加上開車的時間。撿垃圾就是所有垃圾的數量;每台車只要開到它那種垃圾最後出現的位置,用 travel 的前綴和直接查。時間 O(總字元數)。

相關文章

LeetCode 3494: Find the Minimum Amount of Time to Brew Potions
·1 分鐘
LeetCode Medium Simulation Prefix-Sum Array
LeetCode 3494 解題筆記:每瓶藥先往前推出最後一位巫師的完成時間(每個人都要等自己有空),再往回扣出每位巫師的完成時間
LeetCode 3070: Count Submatrices with Top-Left Element and Sum Less Than k
·1 分鐘
LeetCode Medium Array Matrix Prefix-Sum
LeetCode 3070 解題筆記:包含左上角的子矩陣就是二維前綴和 P[i][j],數有幾個 <= k
LeetCode 238: Product of Array Except Self
·1 分鐘
LeetCode Medium Array Prefix-Sum
LeetCode 238 解題筆記:答案是左邊所有數的乘積乘上右邊所有數的乘積,兩次掃描,不用除法
LeetCode 79: Word Search
·2 分鐘
LeetCode Medium Array String Backtracking Depth-First-Search
LeetCode 79 解題筆記:從每一格開始回溯,往四個方向比對下一個字元,走過的格子暫時標記,回溯時還原;先用字元次數剪枝
LeetCode 49: Group Anagrams
·1 分鐘
LeetCode Medium Array Hash-Table String Sorting
LeetCode 49 解題筆記:把每個字串排序後當成 key,同一個 key 的字串就是同一組 anagram
LeetCode 2410: Maximum Matching of Players With Trainers
·1 分鐘
LeetCode Medium Two-Pointers Greedy Sorting Array
LeetCode 2410 解題筆記:兩邊都排序後,用同向雙指針讓最弱的球員配最小的、夠用的教練