Medium
LeetCode 3795: Minimum Subarray Length With Distinct Sum At Least K
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Array
LeetCode 3795 解題筆記:求最短的可變視窗;同一個值只算一次,記錄每個值最後出現的位置,左邊界移出的是最後一次出現才扣掉
LeetCode 2653: Sliding Subarray Beauty
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Array
LeetCode 2653 解題筆記:值域只有 -50 到 50,固定視窗用計數陣列維護,每個視窗從 -50 往上累加找第 x 小的負數
LeetCode 1888: Minimum Number of Flips to Make the Binary String Alternating
·1 分鐘
LeetCode
Medium
Sliding-Window
String
Dynamic-Programming
LeetCode 1888 解題筆記:把移到尾巴的操作變成在 s + s 上滑動長度 n 的視窗;視窗跟 0101… 不同的數量是 diff,跟 1010… 不同的就是 n - diff
LeetCode 3788: Maximum Score of a Split
·1 分鐘
LeetCode
Medium
Prefix-Sum
Array
LeetCode 3788 解題筆記:先建後綴最小值,再從左邊累加前綴和,枚舉每個分割點
LeetCode 3694: Distinct Points Reachable After Substring Removal
·1 分鐘
LeetCode
Medium
Sliding-Window
Prefix-Sum
Hash-Table
String
LeetCode 3694 解題筆記:終點 = 全部的位移 − 被刪掉那段的位移;用長度 k 的視窗維護那段的位移,把每個終點放進 set
LeetCode 2134: Minimum Swaps to Group All 1's Together II
·1 分鐘
LeetCode
Medium
Sliding-Window
Array
LeetCode 2134 解題筆記:所有 1 最後會佔一段長度為 1 的個數的環狀視窗,要交換的次數就是視窗裡 0 的數量;在環上滑動找最小值
LeetCode 3679: Minimum Discards to Balance Inventory
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Simulation
Counting
Array
LeetCode 3679 解題筆記:規則已經決定哪些要丟,直接模擬;長度 w 的視窗只計算「留下來」的到貨,被丟掉的離開視窗時不能再扣
LeetCode 2461: Maximum Sum of Distinct Subarrays With Length K
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Array
LeetCode 2461 解題筆記:固定長度 k 的視窗,不同值的個數剛好等於 k 才代表全部不重複
LeetCode 1423: Maximum Points You Can Obtain from Cards
·1 分鐘
LeetCode
Medium
Sliding-Window
Prefix-Sum
Array
LeetCode 1423 解題筆記:從兩端拿 k 張,等於中間留下連續 n - k 張;用固定長度視窗找留下來的最小和
LeetCode 2841: Maximum Sum of Almost Unique Subarray
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Array
LeetCode 2841 解題筆記:固定長度 k 的視窗,維護總和與計數雜湊表;不同值的個數就是雜湊表的大小,數量歸零要刪 key
LeetCode 3709: Design Exam Scores Tracker
·1 分鐘
LeetCode
Medium
Binary-Search
Prefix-Sum
Design
LeetCode 3709 解題筆記:時間遞增,存前綴和,查詢用兩次 bisect;mid 一定要加括號
LeetCode 3708: Longest Fibonacci Subarray
·1 分鐘
LeetCode
Medium
Array
LeetCode 3708 解題筆記:長度 1、2 一定成立;從第三個開始,nums[i] == nums[i-1] + nums[i-2] 就延長,否則長度回到 2