↓快轉到主要內容

Medium

LeetCode 2762: Continuous Subarrays
·1 分鐘
LeetCode Medium Sliding-Window Monotonic-Queue
LeetCode 2762 解題筆記:滑動窗口加兩個單調隊列,隨時拿到窗口的最大值和最小值
LeetCode 1358: Number of Substrings Containing All Three Characters
·1 分鐘
LeetCode Medium Sliding-Window Hash-Table String
LeetCode 1358 解題筆記:「至少各一個 a、b、c」的計數視窗:三種都有時一直縮左邊,count += left
LeetCode 3815: Design Auction System
·2 分鐘
LeetCode Medium Heap Design Hash-Map Lazy-Deletion
LeetCode 3815 解題筆記:每個商品一個 max-heap,出價改變就推新的一筆,查詢時丟掉過期的
LeetCode 3814: Maximum Capacity Within Budget
·1 分鐘
LeetCode Medium Binary-Search Sorting Prefix-Sum
LeetCode 3814 解題筆記:依成本排序加上前綴最大容量,每台機器用 bisect 找能搭配的最貴機器
LeetCode 2904: Shortest and Lexicographically Smallest Beautiful String
·1 分鐘
LeetCode Medium Sliding-Window String
LeetCode 2904 解題筆記:視窗裡剛好 k 個 1 時,把左邊的 0 也縮掉,得到以 right 結尾最短的美麗子字串;先比長度再比字典序
LeetCode 2875: Minimum Size Subarray in Infinite Array
·1 分鐘
LeetCode Medium Sliding-Window Prefix-Sum Hash-Table Array
LeetCode 2875 解題筆記:先拿掉 target // sum 個完整週期,剩下的餘數比一整圈小,一定能在兩份 nums 接起來的陣列裡用滑動視窗找到
LeetCode 1234: Replace the Substring for Balanced String
·1 分鐘
LeetCode Medium Sliding-Window String
LeetCode 1234 解題筆記:替換一段之後,視窗外的每個字元都不能超過 n / 4;用「求最短」的滑動視窗維護視窗外的數量
LeetCode 1040: Moving Stones Until Consecutive II
·1 分鐘
LeetCode Medium Sliding-Window Math Sorting Array
LeetCode 1040 解題筆記:最多步數 = 總空位 − 第一步會浪費掉的那一邊空隙;最少步數用長度 n 的視窗找最多石頭,n - 1 顆已連續、剩一顆在遠處時要特判成 2
LeetCode 395: Longest Substring with At Least K Repeating Characters
·2 分鐘
LeetCode Medium Sliding-Window Divide-and-Conquer Hash-Table String
LeetCode 395 解題筆記:「每個字元至少 k 次」不單調,不能直接滑動;分治法用出現不到 k 次的字元切開,或枚舉視窗裡有幾種字元,固定種類數後就能滑動
LeetCode 3810: Minimum Operations to Reach Target Array
·1 分鐘
LeetCode Medium Greedy Hash-Table Array
LeetCode 3810 解題筆記:一次操作會把某個值的所有位置都改對,所以答案是不相等的位置上有幾種不同的值
LeetCode 3809: Best Reachable Tower
·1 分鐘
LeetCode Medium Array
LeetCode 3809 解題筆記:先過濾曼哈頓距離在半徑內的塔,用 (-品質, x, y) 當 key 取最小,就同時處理了平手
LeetCode 3413: Maximum Coins From K Consecutive Bags
·2 分鐘
LeetCode Medium Sliding-Window Greedy Sorting Prefix-Sum Binary-Search Array
LeetCode 3413 解題筆記:最佳的 k 個袋子,一定有一端對齊某段的端點;分別算「左端對齊段的起點」和「右端對齊段的終點」(鏡像後重用同一個函式)