Array
LeetCode 105: Construct Binary Tree from Preorder and Inorder Traversal
·2 分鐘
LeetCode
Medium
Array
Hash-Table
Divide-and-Conquer
Tree
LeetCode 105 解題筆記:前序的第一個是根,在中序裡找到根的位置就知道左子樹有幾個節點;用字典查位置,O(n)
LeetCode 875: Koko Eating Bananas
·1 分鐘
LeetCode
Medium
Array
Binary-Search
LeetCode 875 解題筆記:對速度二分,找最小的 k 讓總時數 <= h;時數剛好等於 h 時還要繼續往左找
LeetCode 153: Find Minimum in Rotated Sorted Array
·1 分鐘
LeetCode
Medium
Array
Binary-Search
LeetCode 153 解題筆記:拿 mid 跟右端比:nums[mid] > nums[r] 代表最小值在右邊,否則 mid 可能就是最小值,r = mid
LeetCode 42: Trapping Rain Water
·1 分鐘
LeetCode
Hard
Array
Two-Pointers
Dynamic-Programming
Stack
LeetCode 42 解題筆記:每格能存的水是 min(左邊最高, 右邊最高) - 自己的高度;用前後綴最大值或左右雙指針
LeetCode 347: Top K Frequent Elements
·1 分鐘
LeetCode
Medium
Array
Hash-Table
Divide-and-Conquer
Sorting
LeetCode 347 解題筆記:先計數,再用大小為 k 的 heap 或 bucket sort(次數當 index)取出次數最多的 k 個
LeetCode 238: Product of Array Except Self
·1 分鐘
LeetCode
Medium
Array
Prefix-Sum
LeetCode 238 解題筆記:答案是左邊所有數的乘積乘上右邊所有數的乘積,兩次掃描,不用除法
LeetCode 167: Two Sum II - Input Array Is Sorted
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Binary-Search
LeetCode 167 解題筆記:已排序,左右指針往中間走:和太大右指針左移,太小左指針右移;回傳的 index 從 1 開始
LeetCode 128: Longest Consecutive Sequence
·1 分鐘
LeetCode
Medium
Array
Hash-Table
Union-Find
LeetCode 128 解題筆記:放進 set,只從「x - 1 不在 set 裡」的數開始往上數,每個數最多被看兩次,O(n)
LeetCode 90: Subsets II
·1 分鐘
LeetCode
Medium
Array
Backtracking
Bit-Manipulation
LeetCode 90 解題筆記:先排序;遇到跟前一個相同的數,只延伸上一步新產生的那些子集合
LeetCode 81: Search in Rotated Sorted Array II
·1 分鐘
LeetCode
Medium
Array
Binary-Search
LeetCode 81 解題筆記:有重複值時 nums[l] == nums[mid] 會分不出哪一半有序,這時只能把 l 往右移一格;最壞 O(n)
LeetCode 80: Remove Duplicates from Sorted Array II
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
LeetCode 80 解題筆記:每個值最多留兩個:跟寫入位置往前第二個 nums[k - 2] 比,不一樣才寫
LeetCode 79: Word Search
·2 分鐘
LeetCode
Medium
Array
String
Backtracking
Depth-First-Search
LeetCode 79 解題筆記:從每一格開始回溯,往四個方向比對下一個字元,走過的格子暫時標記,回溯時還原;先用字元次數剪枝