↓快轉到主要內容

Queue

Queue 與設計題
·2 分鐘
演算法 Queue Design Iterator Lazy-Deletion
環狀佇列、交錯迭代器、FIFO 配對加上取消,以及設計題常用的資料結構組合
LeetCode 622: Design Circular Queue
·1 分鐘
LeetCode Medium Queue Design Array
LeetCode 622 解題筆記:固定大小陣列加上 head 和 count,位置都對容量取模,空和滿用 count 判斷
LeetCode 1425: Constrained Subsequence Sum
·1 分鐘
LeetCode Hard Sliding-Window Dynamic-Programming Monotonic-Queue Heap Queue Array
LeetCode 1425 解題筆記:dp[i] = nums[i] + max(0, 前 k 個 dp 的最大值);前 k 個 dp 的最大值是滑動視窗最大值,用單調佇列 O(1) 取得
LeetCode 281: Zigzag Iterator
·1 分鐘
LeetCode Medium Queue Design Iterator
LeetCode 281 解題筆記:queue 裡放還沒用完的來源,輪流取一個,還有剩就放回尾端;可以直接推廣到 k 個
LeetCode 3835: Count Subarrays With Cost Less Than or Equal to K
·1 分鐘
LeetCode Medium Sliding-Window Monotonic-Queue Queue Array
LeetCode 3835 解題筆記:花費 = (最大 - 最小) × 長度,視窗變大只會變貴,所以可以滑動視窗數子陣列;視窗最大、最小值用兩個單調佇列維護
LeetCode 3829: Design Ride Sharing System
·1 分鐘
LeetCode Medium Queue Design Hash-Map Lazy-Deletion
LeetCode 3829 解題筆記:乘客和司機各一個 queue,取消只記在 set 裡,配對前再把隊頭已取消的乘客丟掉
LeetCode 1696: Jump Game VI
·2 分鐘
LeetCode Medium Dynamic-Programming Monotonic-Queue Queue Heap
LeetCode 1696 解題筆記:dp[i] = nums[i] + 前 k 個 dp 的最大值;前 k 個的最大值用單調佇列維護,O(n)
LeetCode 3508: Implement Router
·2 分鐘
LeetCode Medium Design Binary-Search Queue Hash-Map
LeetCode 3508 解題筆記:queue 管 FIFO、set 判重複、每個目的地一個遞增的時間陣列,查詢用 bisect
LeetCode 387: First Unique Character in a String
·1 分鐘
LeetCode Easy Hash-Table String Queue Counting
LeetCode 387 解題筆記:先計數,再從左到右找第一個次數是 1 的字元
LeetCode 232: Implement Queue using Stacks
·1 分鐘
LeetCode Easy Stack Design Queue
LeetCode 232 解題筆記:兩個 stack:in 負責 push,out 空的時候才把 in 全部倒過去,均攤 O(1)
LeetCode 225: Implement Stack using Queues
·1 分鐘
LeetCode Easy Stack Design Queue
LeetCode 225 解題筆記:一個 queue 就夠:push 之後把前面的元素全部轉到後面,新元素就到了隊首