Memoization
Interval DP 區間 DP
·2 分鐘
演算法
Dynamic-Programming
Interval-Dp
Memoization
Binary-Search
區間 DP(枚舉最後一步 / 兩端合併)、切成 k 段的分割 DP、回文表 + 分割,以及狀態太複雜時直接記憶化搜尋整個狀態
LeetCode 773: Sliding Puzzle
·1 分鐘
LeetCode
Hard
Breadth-First-Search
Dynamic-Programming
Memoization
Matrix
LeetCode 773 解題筆記:盤面只有 6! = 720 種,把盤面攤平成字串當 BFS 的狀態,0 跟相鄰格交換就是下一個狀態
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 488: Zuma Game
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Memoization
Breadth-First-Search
String
Stack
LeetCode 488 解題筆記:board 最多 16 顆、hand 最多 5 顆,把 (board, hand) 整個當狀態做 DFS + 記憶化;只在「同色球前面」和「拆開兩顆同色球」兩種位置插入
LeetCode 397: Integer Replacement
·1 分鐘
LeetCode
Medium
Dynamic-Programming
Greedy
Bit-Manipulation
Memoization
LeetCode 397 解題筆記:偶數一定除以 2;奇數選 +1 或 -1,用記憶化遞迴;n 很大不能開 n 大小的陣列
LeetCode 1137: N-th Tribonacci Number
·1 分鐘
LeetCode
Easy
Math
Dynamic-Programming
Memoization
LeetCode 1137 解題筆記:跟 Fibonacci 一樣,用三個變數滾動;小心 T0 = 0、T1 = T2 = 1 的起始值和迴圈範圍
LeetCode 509: Fibonacci Number
·1 分鐘
LeetCode
Easy
Math
Dynamic-Programming
Recursion
Memoization
LeetCode 509 解題筆記:一維 DP 的起點:只需要前兩項,用兩個變數滾動