Hard
LeetCode 864: Shortest Path to Get All Keys
·2 分鐘
LeetCode
Hard
Bfs
Bit-Manipulation
Matrix
LeetCode 864 解題筆記:BFS 的狀態是 (位置, 拿到的鑰匙遮罩),同一格拿著不同鑰匙是不同的節點
LeetCode 2963: Count the Number of Good Partitions
·1 分鐘
LeetCode
Hard
Math
Combinatorics
Hash-Table
Array
LeetCode 2963 解題筆記:同一個數的所有出現位置必須在同一段,用最後出現位置把陣列切成 b 個不可再分的區塊;區塊之間可切可不切,答案是 2^(b-1)
LeetCode 2376: Count Special Integers
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Digit-Dp
Math
Bitmask
LeetCode 2376 解題筆記:數位 DP,狀態 (pos, tight, started, mask);mask 記錄用過的數字,前導零不能算成用過 0
LeetCode 2163: Minimum Difference in Sums After Removal of Elements
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Heap
Array
LeetCode 2163 解題筆記:枚舉第一段和第二段的分界 k;左邊 nums[:k] 選 n 個最小的(最大堆維護),右邊 nums[k:] 選 n 個最大的(最小堆維護),前後綴各掃一次
LeetCode 1627: Graph Connectivity With Threshold
·1 分鐘
LeetCode
Hard
Math
Number-Theory
Union-Find
Array
LeetCode 1627 解題筆記:不用兩兩算 GCD;對每個 z > threshold,把 z 的所有倍數連起來,總共 O(n log n) 次合併
LeetCode 1944: Number of Visible People in a Queue
·1 分鐘
LeetCode
Hard
Stack
Monotonic-Stack
LeetCode 1944 解題筆記:從右往左維護遞減的單調棧,被彈出的都看得到,彈完剩下的那個也看得到
LeetCode 420: Strong Password Checker
·2 分鐘
LeetCode
Hard
Greedy
String
LeetCode 420 解題筆記:分長度三種情況,太長時優先刪除 len % 3 == 0 的重複段來抵銷取代次數
LeetCode 2193: Minimum Number of Moves to Make Palindrome
·1 分鐘
LeetCode
Hard
Two-Pointers
Greedy
String
Binary-Indexed-Tree
LeetCode 2193 解題筆記:貪心處理最外層:拿最後一個字元,把它最左邊的同伴換到最前面,花費是那個位置;落單的字元最後在正中間,花費是它到中間的距離
LeetCode 4041: Minimum Operations to Form Subset Sum II
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Knapsack
Breadth-First-Search
Array
LeetCode 4041 解題筆記:乘除可以任意順序,用 BFS 找每個數能變成的所有值(不超過 sum)和最少步數,再做跟 4040 一樣的分組 0/1 背包
LeetCode 2328: Number of Increasing Paths in a Grid
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Grid-Dp
Memoization
Topological-Sort
Matrix
LeetCode 2328 解題筆記:嚴格遞增所以沒有環;dp[cell] = 1 + Σ dp[比它大的鄰居],依值由大到小處理(或記憶化 DFS),全部加起來
LeetCode 1377: Frog Position After T Seconds
·2 分鐘
LeetCode
Hard
Tree
Dfs
Bfs
Graph
Probability
LeetCode 1377 解題筆記:無向邊、seen 要記節點、提早到達目標時要看還能不能走
LeetCode 1178: Number of Valid Words for Each Puzzle
·1 分鐘
LeetCode
Hard
Bit-Manipulation
Hash-Map
Trie
LeetCode 1178 解題筆記:單字只在乎用了哪些字母,轉成 26-bit 遮罩計數,再枚舉謎題遮罩的所有子集合