Greedy
LeetCode 1989: Maximum Number of People That Can Be Caught in Tag
·1 分鐘
LeetCode
Medium
Two-Pointers
Greedy
Array
LeetCode 1989 解題筆記:鬼從左到右,每個鬼抓範圍內最左邊、還沒被抓的人;用一個只往右走的指針指向下一個候選人
LeetCode 948: Bag of Tokens
·1 分鐘
LeetCode
Medium
Two-Pointers
Greedy
Sorting
Array
LeetCode 948 解題筆記:排序後,用最小的 token 換分數、用最大的 token 換能量;只有分數 > 0 才能換能量,換不了就停
LeetCode 2697: Lexicographically Smallest Palindrome
·1 分鐘
LeetCode
Easy
Two-Pointers
String
Greedy
LeetCode 2697 解題筆記:對撞指針,兩端不同時都改成比較小的那個字元
LeetCode 1877: Minimize Maximum Pair Sum in Array
·1 分鐘
LeetCode
Medium
Two-Pointers
Greedy
Sorting
Array
LeetCode 1877 解題筆記:排序後最小配最大、次小配次大,對撞指針取配對和的最大值
LeetCode 1616: Split Two Strings to Make Palindrome
·2 分鐘
LeetCode
Medium
Two-Pointers
String
Greedy
LeetCode 1616 解題筆記:外側用 a 的前綴配 b 的後綴貪心比對,配不下去時,剩下的中間段必須整段在 a 或 b 裡是回文;兩個方向都要檢查
LeetCode 3816: Lexicographically Smallest String After Deleting Duplicate Characters
·1 分鐘
LeetCode
Hard
Stack
Monotonic-Stack
Greedy
String
LeetCode 3816 解題筆記:單調棧,頂端比較大而且還有別的副本就刪;最後把尾巴重複的也刪掉,因為前綴一定比較小
LeetCode 3810: Minimum Operations to Reach Target Array
·1 分鐘
LeetCode
Medium
Greedy
Hash-Table
Array
LeetCode 3810 解題筆記:一次操作會把某個值的所有位置都改對,所以答案是不相等的位置上有幾種不同的值
LeetCode 3413: Maximum Coins From K Consecutive Bags
·2 分鐘
LeetCode
Medium
Sliding-Window
Greedy
Sorting
Prefix-Sum
Binary-Search
Array
LeetCode 3413 解題筆記:最佳的 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 1975: Maximum Matrix Sum
·1 分鐘
LeetCode
Medium
Greedy
Matrix
Array
LeetCode 1975 解題筆記:負號可以兩兩搬到任何位置,但負數個數的奇偶不變;奇數個時留一個在絕對值最小的位置
LeetCode 3800: Minimum Cost to Make Two Binary Strings Equal
·1 分鐘
LeetCode
Medium
Greedy
String
LeetCode 3800 解題筆記:不相等的位置分兩類;不同類的兩兩用 swap,同類的兩兩用 cross + swap,剩一個只能 flip,每種都跟兩次 flip 比