Medium
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 24: Swap Nodes in Pairs
·1 分鐘
LeetCode
Medium
Linked-List
Recursion
LeetCode 24 解題筆記:dummy 加上兩兩一組,prev.next、a.next、b.next 三個指標一起重接;交換的是節點不是值
LeetCode 5: Longest Palindromic Substring
·1 分鐘
LeetCode
Medium
Two-Pointers
String
Dynamic-Programming
Manacher
LeetCode 5 解題筆記:中心擴展,每個位置當奇數和偶數長度的中心往外擴;區間 DP 的話 i 要從大到小
LeetCode 19: Remove Nth Node From End of List
·1 分鐘
LeetCode
Medium
Linked-List
Two-Pointers
LeetCode 19 解題筆記:從 dummy 出發,快指針先走 n + 1 步,再一起走到底,慢指針停在要刪的前一個
LeetCode 18: 4Sum
·1 分鐘
LeetCode
Medium
Array
Two-Pointers
Sorting
LeetCode 18 解題筆記:排序後兩層迴圈固定前兩個數,剩下用對撞指針;四個位置都要跳過相同的值
LeetCode 17: Letter Combinations of a Phone Number
·1 分鐘
LeetCode
Medium
Hash-Table
String
Backtracking
LeetCode 17 解題筆記:每一層處理一個數字,枚舉它對應的字母;空字串要回傳空 list
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 解題筆記:左右指針從兩端開始,每次移動比較矮的那一邊;移動高的那邊只會讓寬度變小、高度不會變高