↓快轉到主要內容

LeetCode

LeetCode 43: Multiply Strings
·1 分鐘
LeetCode Medium Math String Simulation
LeetCode 43 解題筆記:num1[i] × num2[j] 的結果落在第 i + j + 1 位,用一個長度 n + m 的陣列累加後再統一進位
LeetCode 40: Combination Sum II
·1 分鐘
LeetCode Medium Array Backtracking
LeetCode 40 解題筆記:每個數只能用一次而且有重複,排序後下一層從 i + 1 開始,同一層跳過跟前一個相同的值
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 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