Array
LeetCode 2537: Count the Number of Good Subarrays
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Array
LeetCode 2537 解題筆記:加入 x 會多出 cnt[x] 對相同的 pair,移出時少 cnt[x] - 1 對;「至少 k 對」的計數視窗,count += left
LeetCode 2962: Count Subarrays Where Max Element Appears at Least K Times
·1 分鐘
LeetCode
Medium
Sliding-Window
Array
LeetCode 2962 解題筆記:「至少 k 次」的計數視窗:最大值出現 k 次時一直縮左邊,縮完後左端在 [0, left) 的子陣列都合法,count += left
LeetCode 2968: Apply Operations to Maximize Frequency Score
·1 分鐘
LeetCode
Hard
Sliding-Window
Sorting
Prefix-Sum
Binary-Search
Array
LeetCode 2968 解題筆記:排序後,把一段全部變成同一個值,最省的目標是中位數;用前綴和 O(1) 算花費,花費隨視窗變大而變大,可以滑動
LeetCode 2875: Minimum Size Subarray in Infinite Array
·1 分鐘
LeetCode
Medium
Sliding-Window
Prefix-Sum
Hash-Table
Array
LeetCode 2875 解題筆記:先拿掉 target // sum 個完整週期,剩下的餘數比一整圈小,一定能在兩份 nums 接起來的陣列裡用滑動視窗找到
LeetCode 2302: Count Subarrays With Score Less Than K
·1 分鐘
LeetCode
Hard
Sliding-Window
Prefix-Sum
Binary-Search
Array
LeetCode 2302 解題筆記:分數 = 總和 × 長度,都是正數,視窗越大分數越大;分數 >= k 就縮左邊,以 right 結尾的合法子陣列有 right - left + 1 個
LeetCode 1040: Moving Stones Until Consecutive II
·1 分鐘
LeetCode
Medium
Sliding-Window
Math
Sorting
Array
LeetCode 1040 解題筆記:最多步數 = 總空位 − 第一步會浪費掉的那一邊空隙;最少步數用長度 n 的視窗找最多石頭,n - 1 顆已連續、剩一顆在遠處時要特判成 2
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 個袋子,一定有一端對齊某段的端點;分別算「左端對齊段的起點」和「右端對齊段的終點」(鏡像後重用同一個函式)
LeetCode 2009: Minimum Number of Operations to Make Array Continuous
·1 分鐘
LeetCode
Hard
Sliding-Window
Hash-Table
Binary-Search
Array
LeetCode 2009 解題筆記:最後的陣列是長度 n 的連續整數;去重排序後,用滑動視窗找值域寬度 <= n - 1 的最多不同值,其他都要改
LeetCode 2555: Maximize Win From Two Segments
·1 分鐘
LeetCode
Medium
Sliding-Window
Binary-Search
Array
LeetCode 2555 解題筆記:滑動視窗算出以每個獎品結尾的一段能拿幾個;同時記錄「前 i 個獎品裡一段最多拿幾個」,第二段就接在第一段左邊
LeetCode 2106: Maximum Fruits Harvested After at Most K Steps
·1 分鐘
LeetCode
Hard
Sliding-Window
Prefix-Sum
Binary-Search
Array
LeetCode 2106 解題筆記:採到的一定是連續一段水果;走完 [L, R] 的最少步數是 (R - L) + min(|start - L|, |R - start|),在水果陣列上用滑動視窗