LeetCode
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|),在水果陣列上用滑動視窗
LeetCode 3805: Count Caesar Cipher Pairs
·1 分鐘
LeetCode
Medium
Math
Hash-Table
String
Counting
LeetCode 3805 解題筆記:把每個字串整串平移到第一個字母是 a,凱薩等價的字串會變成一樣;再數每種正規化結果的配對數
LeetCode 3804: Number of Centered Subarrays
·1 分鐘
LeetCode
Medium
Hash-Table
Enumeration
Array
LeetCode 3804 解題筆記:固定左端點往右擴,邊加總邊把元素放進集合,總和在集合裡就算一個
LeetCode 3803: Count Residue Prefixes
·1 分鐘
LeetCode
Easy
Hash-Table
String
LeetCode 3803 解題筆記:邊掃邊把字元加進集合,前綴的不同字元數等於長度 % 3 就算一個
LeetCode 2831: Find the Longest Equal Subarray
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
Binary-Search
Array
LeetCode 2831 解題筆記:對每個值,把它出現的位置列出來;在位置列表上滑動視窗,要刪的數量 = 位置跨度 − 這個值的個數
LeetCode 2779: Maximum Beauty of an Array After Applying Operation
·1 分鐘
LeetCode
Medium
Sliding-Window
Sorting
Binary-Search
Array
LeetCode 2779 解題筆記:每個數可以變成 [x - k, x + k] 裡的任何值,一群數能變成同一個值 ⇔ 最大 - 最小 <= 2k;排序後找最長的這種視窗
LeetCode 2730: Find the Longest Semi-Repetitive Substring
·1 分鐘
LeetCode
Medium
Sliding-Window
String
LeetCode 2730 解題筆記:視窗裡最多一組相鄰相同的數字;新的一組進來就縮左邊,直到移出前一組
LeetCode 2516: Take K of Each Character From Left and Right
·1 分鐘
LeetCode
Medium
Sliding-Window
Hash-Table
String
LeetCode 2516 解題筆記:從兩端拿等於中間留一段;留下的每種字元最多是總數 − k,找最長的這種中間視窗
LeetCode 2271: Maximum White Tiles Covered by a Carpet
·1 分鐘
LeetCode
Medium
Sliding-Window
Greedy
Sorting
Prefix-Sum
Binary-Search
Array
LeetCode 2271 解題筆記:地毯的左端放在某段白磚的起點一定不會更差;排序後用雙指針,完整蓋住的段累加,最後一段只算部分
LeetCode 1838: Frequency of the Most Frequent Element
·1 分鐘
LeetCode
Medium
Sliding-Window
Sorting
Greedy
Prefix-Sum
Binary-Search
Array
LeetCode 1838 解題筆記:排序後,把視窗裡的數都加到 nums[right] 的花費是 nums[right] × 長度 − 視窗總和;花費 > k 就縮左邊
LeetCode 1458: Max Dot Product of Two Subsequences
·1 分鐘
LeetCode
Hard
Dynamic-Programming
Longest-Common-Subsequence
Array
LeetCode 1458 解題筆記:兩個前綴的 DP;dp[i][j] 可以配對 nums1[i]、nums2[j](接在 dp[i-1][j-1] 後面或自己開頭),或跳過其中一個
LeetCode 3634: Minimum Removals to Balance Array
·1 分鐘
LeetCode
Medium
Sliding-Window
Sorting
Binary-Search
Array
LeetCode 3634 解題筆記:排序後留下來的一定是連續一段;對每個最小值 nums[left],用只往右走的指針找能留到哪裡,刪掉兩邊剩下的