Sliding-Window
LeetCode 3298: Count Substrings That Can Be Rearranged to Contain a String II
·1 分鐘
LeetCode
Hard
Sliding-Window
Hash-Table
String
LeetCode 3298 解題筆記:能重排成以 word2 開頭 ⇔ 每個字元的數量都不少於 word2;「至少」型的計數視窗,用 meet 記錄有幾種字元已經達標
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 3325: Count Substrings With K-Frequency Characters I
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
String
LeetCode 3325 解題筆記:「至少一個字元出現 k 次」的計數視窗;剛加入的字元湊滿 k 次就一直縮,縮到它變成 k - 1 次為止
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 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 632: Smallest Range Covering Elements from K Lists
·2 分鐘
LeetCode
Hard
Heap
K-Way-Merge
Sliding-Window
LeetCode 632 解題筆記:heap 放每條 list 的目前元素,同時記錄最大值,每次推進最小的那條
LeetCode 3258: Count Substrings That Satisfy K-Constraint I
·1 分鐘
LeetCode
Easy
Sliding-Window
String
LeetCode 3258 解題筆記:0 的個數 <= k 或 1 的個數 <= k;兩個都超過才不合法,縮左邊後以 right 結尾的合法子字串有 right - left + 1 個
LeetCode 2968: Apply Operations to Maximize Frequency Score
·1 分鐘
LeetCode
Hard
Sliding-Window
Sorting
Prefix-Sum
Binary-Search
Array
LeetCode 2968 解題筆記:排序後,把一段全部變成同一個值,最省的目標是中位數;用前綴和 O(1) 算花費,花費隨視窗變大而變大,可以滑動
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 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 個