Array
LeetCode 39: Combination Sum
·1 分鐘
LeetCode
Medium
Array
Backtracking
LeetCode 39 解題筆記:同一個數可以重複選,所以遞迴時下一層從 i 開始(不是 i + 1),這樣也避免了順序不同的重複
LeetCode 36: Valid Sudoku
·1 分鐘
LeetCode
Medium
Array
Hash-Table
Matrix
LeetCode 36 解題筆記:每個數字在列、欄、3 × 3 宮格各只能出現一次;用 (數字, 列)、(數字, 欄)、(數字, 宮格) 當 key 放進同一個集合
LeetCode 34: Find First and Last Position of Element in Sorted Array
·2 分鐘
LeetCode
Medium
Array
Binary-Search
LeetCode 34 解題筆記:做兩次 lower bound:第一個 >= target 的位置,以及第一個 >= target + 1 的位置減一
LeetCode 33: Search in Rotated Sorted Array
·2 分鐘
LeetCode
Medium
Array
Binary-Search
LeetCode 33 解題筆記:旋轉後 mid 的左右一定有一邊是排序好的,判斷目標在不在那一邊,在就往那邊找,不在就去另一邊
LeetCode 31: Next Permutation
·2 分鐘
LeetCode
Medium
Array
Two-Pointers
LeetCode 31 解題筆記:從右邊找第一個下降的位置 i,跟右邊比它大的最小值交換,再把 i 之後反轉;比較時要包含等於
LeetCode 18: 4Sum
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Sorting
LeetCode 18 解題筆記:排序後兩層迴圈固定前兩個數,剩下用對撞指針;四個位置都要跳過相同的值
LeetCode 16: 3Sum Closest
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Sorting
LeetCode 16 解題筆記:排序後固定一個數,對撞指針找另外兩個;比較的是和跟 target 的距離 abs(sum - target)
LeetCode 15: 3Sum
·2 分鐘
LeetCode
Medium
Array
Two-Pointers
Sorting
LeetCode 15 解題筆記:排序後固定第一個數,剩下用對撞指針找兩數和;三個位置都要跳過相同的值,才不會有重複的組合
LeetCode 11: Container With Most Water
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Greedy
LeetCode 11 解題筆記:左右指針從兩端開始,每次移動比較矮的那一邊;移動高的那邊只會讓寬度變小、高度不會變高
LeetCode 1184: Distance Between Bus Stops
·1 分鐘
LeetCode
Easy
Array
LeetCode 1184 解題筆記:環狀路線只有兩個方向,順時針是 start 到 destination 之間的和,逆時針是總和減掉它
LeetCode 1160: Find Words That Can Be Formed by Characters
·1 分鐘
LeetCode
Easy
Array
Hash-Table
String
Counting
LeetCode 1160 解題筆記:每個單字的字元次數都不超過 chars 的次數才算能組成,加總這些單字的長度
LeetCode 1128: Number of Equivalent Domino Pairs
·1 分鐘
LeetCode
Easy
Array
Hash-Table
Counting
LeetCode 1128 解題筆記:把每張骨牌正規化成 (小, 大) 當 key 計數,每個 key 有 c 張就有 c(c - 1) / 2 對