LeetCode
LeetCode 2331: Evaluate Boolean Binary Tree
·1 分鐘
LeetCode
Easy
Tree
Depth-First-Search
Binary-Tree
LeetCode 2331 解題筆記:葉子是 0 或 1,內部節點 2 是 OR、3 是 AND,後序遞迴計算
LeetCode 222: Count Complete Tree Nodes
·1 分鐘
LeetCode
Medium
Binary-Search
Bit-Manipulation
Tree
Binary-Tree
LeetCode 222 解題筆記:完全二元樹,左右兩邊的最左高度相同代表那一邊是滿的,直接用 2^h - 1;O(log² n)
LeetCode 129: Sum Root to Leaf Numbers
·1 分鐘
LeetCode
Medium
Tree
Depth-First-Search
Binary-Tree
LeetCode 129 解題筆記:往下走時目前的數字乘 10 加上節點的值,到葉子時加進總和
LeetCode 117: Populating Next Right Pointers in Each Node II
·1 分鐘
LeetCode
Medium
Linked-List
Tree
Depth-First-Search
Breadth-First-Search
Binary-Tree
LeetCode 117 解題筆記:BFS 一層一層接 next;不是完全二元樹時,只看隔壁節點的小孩會斷掉
LeetCode 116: Populating Next Right Pointers in Each Node
·1 分鐘
LeetCode
Medium
Linked-List
Tree
Depth-First-Search
Breadth-First-Search
LeetCode 116 解題筆記:完美二元樹,用上一層已經接好的 next 走過這一層:left.next = right,right.next = next.left;O(1) 額外空間
LeetCode 113: Path Sum II
·1 分鐘
LeetCode
Medium
Backtracking
Tree
Depth-First-Search
Binary-Tree
LeetCode 113 解題筆記:回溯記錄目前的路徑,到葉子時總和等於目標就存一份複本;值可能是負的,不能提早剪枝
LeetCode 107: Binary Tree Level Order Traversal II
·1 分鐘
LeetCode
Medium
Tree
Breadth-First-Search
Binary-Tree
LeetCode 107 解題筆記:一般的層序遍歷,最後把結果反轉,就是由下往上
LeetCode 103: Binary Tree Zigzag Level Order Traversal
·1 分鐘
LeetCode
Medium
Tree
Breadth-First-Search
Binary-Tree
LeetCode 103 解題筆記:一般的層序遍歷,奇數層的結果反轉就是之字形
LeetCode 402: Remove K Digits
·1 分鐘
LeetCode
Medium
String
Stack
Greedy
Monotonic-Stack
LeetCode 402 解題筆記:單調遞增 stack,遇到比頂端小的數字就把頂端刪掉(還有 k 次可刪時),最後去掉前導零
LeetCode 334: Increasing Triplet Subsequence
·1 分鐘
LeetCode
Medium
Array
Greedy
Longest-Increasing-Subsequence
LeetCode 334 解題筆記:維護目前最小的 first 和「前面有比它小的數」中最小的 second,遇到比 second 大的就找到了
LeetCode 324: Wiggle Sort II
·1 分鐘
LeetCode
Medium
Array
Divide-and-Conquer
Greedy
Sorting
LeetCode 324 解題筆記:排序後分成小的一半和大的一半,各自反轉後交錯放:小的放偶數位置、大的放奇數位置
LeetCode 148: Sort List
·1 分鐘
LeetCode
Medium
Linked-List
Two-Pointers
Divide-and-Conquer
Sorting
LeetCode 148 解題筆記:用快慢指針切成兩半,遞迴排序後合併;O(n log n),不需要額外陣列