Two-Pointers
LeetCode 1147: Longest Chunked Palindrome Decomposition
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Greedy
Two-Pointers
Rolling-Hash
String
LeetCode 1147 解題筆記:從兩端同時往內累積字串,左右一相等就切成一對;越早切越好,剩下的中間(如果有)算一塊
LeetCode 522: Longest Uncommon Subsequence II
·1 分鐘
LeetCode
Medium
Two-Pointers
String
Sorting
Array
Hash-Table
LeetCode 522 解題筆記:最長的特殊子序列一定是某個完整字串;依長度由長到短檢查,只要不是其他夠長字串的子序列就是答案
LeetCode 1826: Faulty Sensor
·1 分鐘
LeetCode
Easy
Two-Pointers
Array
LeetCode 1826 解題筆記:找到第一個不同的位置後,比對兩種「誰掉了資料」的情況;兩種都成立時無法判斷,回傳 -1
LeetCode 3884: First Matching Character From Both Ends
·1 分鐘
LeetCode
Easy
Two-Pointers
String
LeetCode 3884 解題筆記:從兩端往中間比,第一個相等的位置就是答案;長度是奇數時中間一定相等
LeetCode 1023: Camelcase Matching
·1 分鐘
LeetCode
Medium
Two-Pointers
String
Trie
LeetCode 1023 解題筆記:雙指針逐字比對,pattern 以外多出來的只能是小寫字母
LeetCode 1570: Dot Product of Two Sparse Vectors
·1 分鐘
LeetCode
Medium
Two-Pointers
Design
Hash-Table
Array
LeetCode 1570 解題筆記:只存非零的 (index, value),內積時用雙指針合併兩個依 index 排序的列表,index 相同才相乘
LeetCode 1229: Meeting Scheduler
·1 分鐘
LeetCode
Medium
Two-Pointers
Sorting
Array
LeetCode 1229 解題筆記:兩個人的時段各自排序後,跟 986 一樣用雙指針找交集;第一個長度夠的交集就是最早的時段
LeetCode 244: Shortest Word Distance II
·1 分鐘
LeetCode
Medium
Two-Pointers
Design
Hash-Table
String
Array
LeetCode 244 解題筆記:預處理每個字的出現位置(天然排序),查詢時對兩個位置列表做雙指針合併,每次移動比較小的那個
LeetCode 986: Interval List Intersections
·1 分鐘
LeetCode
Medium
Two-Pointers
Sweep-Line
Array
LeetCode 986 解題筆記:兩個指針各指一個區間,交集是 [max(起點), min(終點)];結束得比較早的那個區間不會再跟別人相交,把它的指針往前
LeetCode 777: Swap Adjacent in LR String
·1 分鐘
LeetCode
Medium
Two-Pointers
String
LeetCode 777 解題筆記:XL→LX 是 L 往左、RX→XR 是 R 往右;跳過 X 後順序要一樣,L 只能往左、R 只能往右
LeetCode 2337: Move Pieces to Obtain a String
·1 分鐘
LeetCode
Medium
Two-Pointers
String
LeetCode 2337 解題筆記:跳過空格後兩邊的棋子順序必須一樣;L 只能往左、R 只能往右,所以每顆 L 在 start 的位置要 >= target,R 要 <=
LeetCode 1537: Get the Maximum Score
·2 分鐘
LeetCode
Hard
Dynamic-Programming
Two-Pointers
Greedy
Array
LeetCode 1537 解題筆記:兩個排序陣列只在共同的值可以換路;雙指針合併,兩條路各自累加,遇到共同的值時兩邊都取較大的那個再加上它