Medium
LeetCode 48: Rotate Image
·1 分鐘
LeetCode
Medium
Array
Math
Matrix
LeetCode 48 解題筆記:順時針轉 90 度 = 先轉置再把每一列左右反轉,兩步都可以原地做
LeetCode 695: Max Area of Island
·1 分鐘
LeetCode
Medium
Array
Depth-First-Search
Breadth-First-Search
Union-Find
LeetCode 695 解題筆記:每遇到一個沒走過的 1 就 DFS 整座島,數格子數,取最大值;格子是整數 1,不是字串
LeetCode 417: Pacific Atlantic Water Flow
·1 分鐘
LeetCode
Medium
Array
Depth-First-Search
Breadth-First-Search
Matrix
LeetCode 417 解題筆記:反過來從海邊往內走,只能走到不比自己低的格子;兩個海都走得到的格子就是答案
LeetCode 133: Clone Graph
·1 分鐘
LeetCode
Medium
Hash-Table
Depth-First-Search
Breadth-First-Search
Graph
LeetCode 133 解題筆記:DFS 時用雜湊表記住舊節點對應的新節點,遇到已經複製過的就直接回傳,避免無限遞迴;空圖回傳 None
LeetCode 131: Palindrome Partitioning
·1 分鐘
LeetCode
Medium
String
Dynamic-Programming
Backtracking
LeetCode 131 解題筆記:每一層從剩下字串的開頭切出一段回文,切的長度從 1 到整段都要試
LeetCode 98: Validate Binary Search Tree
·2 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Binary-Search-Tree
Binary-Tree
LeetCode 98 解題筆記:每個節點都有一個合法範圍(下界, 上界),往左走上界變成自己、往右走下界變成自己;只比父子不夠
LeetCode 973: K Closest Points to Origin
·1 分鐘
LeetCode
Medium
Array
Math
Divide-and-Conquer
Geometry
LeetCode 973 解題筆記:跟 Top-K 一樣,用大小為 k 的 max-heap(存負的距離)保留最近的 k 個點
LeetCode 287: Find the Duplicate Number
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Binary-Search
Bit-Manipulation
LeetCode 287 解題筆記:把 i -> nums[i] 看成鏈結串列,重複的值就是環的入口,用 Floyd 判圈;O(1) 空間、不改陣列
LeetCode 230: Kth Smallest Element in a BST
·1 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Binary-Search-Tree
Binary-Tree
LeetCode 230 解題筆記:BST 的中序遍歷是由小到大,迭代中序走到第 k 個就停
LeetCode 215: Kth Largest Element in an Array
·1 分鐘
LeetCode
Medium
Array
Divide-and-Conquer
Sorting
Heap-Priority-Queue
LeetCode 215 解題筆記:維持大小為 k 的 min-heap,堆頂就是第 k 大;或用 quickselect 平均 O(n)
LeetCode 208: Implement Trie (Prefix Tree)
·1 分鐘
LeetCode
Medium
Hash-Table
String
Design
Trie
LeetCode 208 解題筆記:每個節點是 children 字典加一個 is_end 標記;insert、search、startsWith 都是沿著字元往下走
LeetCode 199: Binary Tree Right Side View
·1 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Breadth-First-Search
Binary-Tree
LeetCode 199 解題筆記:層序遍歷,每一層最右邊的節點就是從右邊看得到的