↓快轉到主要內容

LeetCode

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 3835: Count Subarrays With Cost Less Than or Equal to K
·1 分鐘
LeetCode Medium Sliding-Window Monotonic-Queue Queue Array
LeetCode 3835 解題筆記:花費 = (最大 - 最小) × 長度,視窗變大只會變貴,所以可以滑動視窗數子陣列;視窗最大、最小值用兩個單調佇列維護
LeetCode 3834: Merge Adjacent Equal Elements
·1 分鐘
LeetCode Medium Stack Simulation Array
LeetCode 3834 解題筆記:stack 模擬,新元素跟頂端相同就合併,合併後可能還要繼續跟新的頂端合併
LeetCode 3833: Count Dominant Indices
·1 分鐘
LeetCode Easy Array Enumeration
LeetCode 3833 解題筆記:從右往左維護後綴總和,比較 nums[i] × 右邊個數 > 右邊總和,不用浮點數也不會包含自己
LeetCode 3379: Transformed Array
·1 分鐘
LeetCode Easy Array Simulation
LeetCode 3379 解題筆記:往右或往左走 nums[i] 步都可以寫成 nums[(i + nums[i]) % n];Python 的 % 對負數也回傳非負值
LeetCode 2054: Two Best Non-Overlapping Events
·1 分鐘
LeetCode Medium Dynamic-Programming Binary-Search Sorting Heap
LeetCode 2054 解題筆記:只能選兩個,所以對每個活動,加上「在它開始前就結束的活動裡價值最大的」;依結束時間排序,前綴最大值 + 二分搜尋
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 3829: Design Ride Sharing System
·1 分鐘
LeetCode Medium Queue Design Hash-Map Lazy-Deletion
LeetCode 3829 解題筆記:乘客和司機各一個 queue,取消只記在 set 裡,配對前再把隊頭已取消的乘客丟掉
LeetCode 3828: Final Element After Subarray Deletions
·1 分鐘
LeetCode Medium Math Brainteaser Game-Theory Array
LeetCode 3828 解題筆記:Alice 第一步就能只留下頭或尾,所以至少拿到 max(頭, 尾);Bob 每次也能只留下目前的頭或尾,而 Alice 的一次刪除最多改變其中一端,所以答案就是 max(頭, 尾)