Stack
LeetCode 32: Longest Valid Parentheses
·1 分鐘
LeetCode
Hard
String
Dynamic-Programming
Stack
Bracket-Sequences
LeetCode 32 解題筆記:堆疊存索引,底部放目前這段合法括號開始前的位置,長度是 i - stack[-1]
LeetCode 331: Verify Preorder Serialization of a Binary Tree
·1 分鐘
LeetCode
Medium
String
Stack
Tree
Binary-Tree
LeetCode 331 解題筆記:數空位:一開始 1 個,每個節點用掉 1 個,非空節點再多出 2 個;中途不能變負,最後要剛好 0
LeetCode 173: Binary Search Tree Iterator
·1 分鐘
LeetCode
Medium
Stack
Tree
Design
Binary-Search-Tree
Binary-Tree
Iterator
LeetCode 173 解題筆記:攤平成陣列很直接但用 O(n) 空間;follow-up 用 stack 存左側鏈,均攤 O(1)、空間 O(h)
Stack 與單調棧
·3 分鐘
演算法
Stack
Monotonic-Stack
Greedy
Simulation
巢狀結構解析、跟前一個元素合併的模擬、單調棧、貪心刪字元取字典序最小,以及 lazy deletion 的 Max Stack
LeetCode 2751: Robot Collisions
·1 分鐘
LeetCode
Hard
Stack
Simulation
Sorting
LeetCode 2751 解題筆記:依位置排序,往右的機器人放進 stack,往左的遇到就一路碰撞到其中一方消失
LeetCode 4045: Count Robot Groups
·1 分鐘
LeetCode
Medium
Stack
Monotonic-Stack
Greedy
LeetCode 4045 解題筆記:先合併 t = 0 就夠近的機器人,再從右往左像車隊一樣,比前面車隊快的遲早會併入
LeetCode 716: Max Stack
·2 分鐘
LeetCode
Hard
Stack
Heap
Design
Lazy-Deletion
LeetCode 716 解題筆記:stack 和 heap 都存唯一 id,刪除只記 id,查詢時再丟掉已刪除的;用值記錄會分不清重複的元素
LeetCode 1028: Recover a Tree From Preorder Traversal
·2 分鐘
LeetCode
Hard
Tree
Binary-Tree
Dfs
Stack
String
LeetCode 1028 解題筆記:用 stack 維護從根到目前節點的路徑,stack 長度就是深度
LeetCode 1944: Number of Visible People in a Queue
·1 分鐘
LeetCode
Hard
Stack
Monotonic-Stack
LeetCode 1944 解題筆記:從右往左維護遞減的單調棧,被彈出的都看得到,彈完剩下的那個也看得到
LeetCode 2355: Maximum Number of Books You Can Take
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Monotonic-Stack
Stack
Array
LeetCode 2355 解題筆記:以 i 結尾時往左每格少拿 1 本,直到碰到書比較少的瓶頸書架 j;用單調堆疊找 j,dp[i] = dp[j] + 等差數列和
LeetCode 316: Remove Duplicate Letters
·1 分鐘
LeetCode
Medium
Stack
Monotonic-Stack
Greedy
String
LeetCode 316 解題筆記:單調棧 + 最後出現位置,頂端比較大而且後面還會出現就彈掉;已經在 stack 裡的直接跳過
LeetCode 726: Number of Atoms
·2 分鐘
LeetCode
Hard
Stack
String
Hash-Map
Sorting
LeetCode 726 解題筆記:先把字串切成元素、數字、括號三種 token,括號用 stack 處理,沒有數字時倍數是 1