LeetCode
LeetCode 1246: Palindrome Removal
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Interval-Dp
Array
LeetCode 1246 解題筆記:區間 DP;arr[i] 自己刪、兩端相同時跟裡面一起刪,或切成兩段,三種取最小
LeetCode 1210: Minimum Moves to Reach Target with Rotations
·2 分鐘
LeetCode
Hard
Bfs
Matrix
LeetCode 1210 解題筆記:BFS 的狀態是 (蛇尾位置, 方向),四種移動各自檢查需要空的格子;每步成本相同不需要 heap
LeetCode 1028: Recover a Tree From Preorder Traversal
·2 分鐘
LeetCode
Hard
Tree
Binary-Tree
Dfs
Stack
String
LeetCode 1028 解題筆記:用 stack 維護從根到目前節點的路徑,stack 長度就是深度
LeetCode 4046: Minimum Cost Path With At Most K Turns
·2 分鐘
LeetCode
Hard
Graph
Shortest-Path
Heap
Matrix
LeetCode 4046 解題筆記:Dijkstra 的狀態加上「上一步方向」和「已轉彎數」;同一格同方向時,先處理的成本較低,轉彎數也較少的話就支配後面的狀態
LeetCode 2509: Cycle Length Queries in a Tree
·1 分鐘
LeetCode
Hard
Tree
Binary-Tree
Lca
LeetCode 2509 解題筆記:完全二元樹的編號,parent 就是 v // 2,比較大的往上爬到 LCA
LeetCode 301: Remove Invalid Parentheses
·2 分鐘
LeetCode
Hard
Backtracking
Bfs
String
LeetCode 301 解題筆記:先算出最少要刪幾個左右括號再回溯;或用 BFS 一層刪一個,第一個出現合法字串的層就是答案
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 1373: Maximum Sum BST in Binary Tree
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Tree-Dp
Binary-Search-Tree
Depth-First-Search
Tree
LeetCode 1373 解題筆記:後序遍歷回傳 (總和, 最小值, 最大值, 是不是 BST);左子樹的最大值 < 自己 < 右子樹的最小值才是 BST
LeetCode 996: Number of Squareful Arrays
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Bitmask
Backtracking
Math
Hash-Table
LeetCode 996 解題筆記:n 最多 12,用 bitmask DP:dp[mask][last] = 用了 mask 這些數、最後一個是 last 的排列數;相同的數規定依 index 順序使用來去重
LeetCode 773: Sliding Puzzle
·1 分鐘
LeetCode
Hard
Breadth-First-Search
Dynamic-Programming
Memoization
Matrix
LeetCode 773 解題筆記:盤面只有 6! = 720 種,把盤面攤平成字串當 BFS 的狀態,0 跟相鄰格交換就是下一個狀態
LeetCode 1354: Construct Target Array With Multiple Sums
·1 分鐘
LeetCode
Hard
Heap
Math
Greedy
LeetCode 1354 解題筆記:反著做,最大值一定是最後被設定的;差距大時用取餘數一次跳完
LeetCode 719: Find K-th Smallest Pair Distance
·2 分鐘
LeetCode
Hard
Binary-Search
Two-Pointers
Sliding-Window
Sorting
LeetCode 719 解題筆記:對距離二分,用滑動窗口數「距離 <= mid 的 pair 數」