↓快轉到主要內容

Matrix

Matrix 矩陣
·3 分鐘
演算法 Matrix Simulation Array
轉置與旋轉、二維 index 和一維序列互換、鄰居與對角線、四個邊界的螺旋走訪
BFS 與圖的遍歷
·3 分鐘
演算法 Bfs Dfs Graph Matrix Union-Find
連通塊、網格 flood fill、多源 BFS、狀態空間 BFS、最短環,以及遞迴 DFS 的深度問題
LeetCode 827: Making A Large Island
·2 分鐘
LeetCode Hard Dfs Bfs Matrix Union-Find
LeetCode 827 解題筆記:先幫每座島編號並記大小,再對每個 0 看四周有哪些不同的島,大小相加再加 1
LeetCode 212: Word Search II
·1 分鐘
LeetCode Hard Trie Backtracking Matrix
LeetCode 212 解題筆記:把所有單字建成 Trie,網格 DFS 時同步走 Trie,找到就移除、空節點就剪掉
LeetCode 2267: Check if There Is a Valid Parentheses String Path
·2 分鐘
LeetCode Hard Dynamic-Programming Grid-Dp Matrix Bracket-Sequences
LeetCode 2267 解題筆記:狀態是 (r, c, 左括號餘額);餘額不能是負的,也不能超過剩下的步數;BFS / DP 搜尋這些狀態,走到終點時餘額為 0 就成立
LeetCode 1210: Minimum Moves to Reach Target with Rotations
·2 分鐘
LeetCode Hard Bfs Matrix
LeetCode 1210 解題筆記:BFS 的狀態是 (蛇尾位置, 方向),四種移動各自檢查需要空的格子;每步成本相同不需要 heap
LeetCode 4046: Minimum Cost Path With At Most K Turns
·2 分鐘
LeetCode Hard Graph Shortest-Path Heap Matrix
LeetCode 4046 解題筆記:Dijkstra 的狀態加上「上一步方向」和「已轉彎數」;同一格同方向時,先處理的成本較低,轉彎數也較少的話就支配後面的狀態
LeetCode 773: Sliding Puzzle
·1 分鐘
LeetCode Hard Breadth-First-Search Dynamic-Programming Memoization Matrix
LeetCode 773 解題筆記:盤面只有 6! = 720 種,把盤面攤平成字串當 BFS 的狀態,0 跟相鄰格交換就是下一個狀態
LeetCode 499: The Maze III
·2 分鐘
LeetCode Hard Graph Dijkstra Shortest-Path Heap Matrix
LeetCode 499 解題筆記:Dijkstra 的優先度用 (距離, 路徑字串),滾動途中經過洞就要停下
LeetCode 864: Shortest Path to Get All Keys
·2 分鐘
LeetCode Hard Bfs Bit-Manipulation Matrix
LeetCode 864 解題筆記:BFS 的狀態是 (位置, 拿到的鑰匙遮罩),同一格拿著不同鑰匙是不同的節點
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 1292: Maximum Side Length of a Square with Sum Less than or Equal to Threshold
·2 分鐘
LeetCode Medium Binary-Search Prefix-Sum Matrix
LeetCode 1292 解題筆記:二維前綴和加上對邊長二分;兩種二分寫法不能混用