↓快轉到主要內容

Two-Pointers

LeetCode 763: Partition Labels
·1 分鐘
LeetCode Medium Hash-Table Two-Pointers String Greedy
LeetCode 763 解題筆記:先記每個字母最後出現的位置,掃描時把這段的結尾延伸到最遠,走到結尾就切
Linked List 鏈結串列
·3 分鐘
演算法 Linked-List Two-Pointers
Dummy head、反轉(整條、一段、一半)、快慢指針找中點與環、間隔 n 的雙指針、兩兩交換、兩條串列相遇,以及用雜湊表複製帶 random 指標的串列
Two Pointers 雙指針
·5 分鐘
演算法 Two-Pointers String Sorting
對撞指針、兩個序列各一個指針、跳過空白比對位置、排序後數 pair,以及原地覆寫的寫入指針
Binary Search 二分搜尋
·5 分鐘
演算法 Binary-Search Prefix-Sum Two-Pointers
lower / upper bound、對答案二分、第 k 小、整數開根號,以及兩種區間寫法不能混用
LeetCode 493: Reverse Pairs
·3 分鐘
LeetCode Hard Merge-Sort Divide-and-Conquer Two-Pointers Counting
LeetCode 493 解題筆記:計數條件和排序條件不同時,先掃再合併
LeetCode 2426: Number of Pairs Satisfying Inequality
·2 分鐘
LeetCode Hard Merge-Sort Divide-and-Conquer Two-Pointers Counting
LeetCode 2426 解題筆記:先化簡式子,再判斷符合的是前綴還是後綴
LeetCode 88: Merge Sorted Array
·2 分鐘
LeetCode Easy Two-Pointers Merge-Sort
LeetCode 88 解題筆記:從後往前合併,O(1) 額外空間
LeetCode 21: Merge Two Sorted Lists
·2 分鐘
LeetCode Easy Linked-List Two-Pointers Merge-Sort
LeetCode 21 解題筆記:dummy node,以及 Python 變數為什麼不是 copy
LeetCode 1842: Next Palindrome Using Same Digits
·2 分鐘
LeetCode Hard Two-Pointers String
LeetCode 1842 解題筆記:回文由左半邊決定,中間的數字固定不動;對左半邊做 next permutation,再鏡像回去
LeetCode 719: Find K-th Smallest Pair Distance
·2 分鐘
LeetCode Hard Binary-Search Two-Pointers Sliding-Window Sorting
LeetCode 719 解題筆記:對距離二分,用滑動窗口數「距離 <= mid 的 pair 數」
LeetCode 2193: Minimum Number of Moves to Make Palindrome
·1 分鐘
LeetCode Hard Two-Pointers Greedy String Binary-Indexed-Tree
LeetCode 2193 解題筆記:貪心處理最外層:拿最後一個字元,把它最左邊的同伴換到最前面,花費是那個位置;落單的字元最後在正中間,花費是它到中間的距離
LeetCode 4026: Maximum Gap Between Stations
·2 分鐘
LeetCode Medium Two-Pointers Greedy String
LeetCode 4026 解題筆記:從左邊貪心配出每個工人最早可用的站、從右邊配出最晚可用的站;在第 i 和 i+1 個工人之間切開,最大間隔是 latest[i+1] - earliest[i]