↓快轉到主要內容
  1. LeetCode/

LeetCode 3689: Maximum Total Subarray Value I

·1 分鐘· ·
LeetCode Medium Greedy Array
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: medium 第一次嘗試:2025-09-21

  • 提交紀錄:Accepted(一次通過)

解題思路
#

一個子陣列的值是裡面的最大值減最小值。任何子陣列的最大值都 <= 整個陣列的最大值,最小值都 >= 整個陣列的最小值,所以整個陣列的值最大。題目允許同一個子陣列重複選,選它 k 次就好。

我的解法
#

class Solution:
    def maxTotalValue(self, nums: List[int], k: int) -> int:
        return (max(nums) - min(nums)) * k

複雜度
#

時間 O(n),空間 O(1)。

要特別避免的錯誤
#

  • 注意「可以重複選同一個子陣列」這個條件;如果每個子陣列只能選一次,就不能這樣做,要另外挑出值最大的 k 個。

面試口說整理
#

任何子陣列的最大減最小都不會超過整個陣列的最大減最小,而且同一個子陣列可以重複選,所以答案是整個陣列的值乘上 k。時間 O(n)。

相關文章

LeetCode 2294: Partition Array Such That Maximum Difference Is K
·1 分鐘
LeetCode Medium Greedy Sorting Array
LeetCode 2294 解題筆記:子序列不在乎順序,排序後從最小的開始,每組盡量往右延伸到超過 min + k 為止
LeetCode 2410: Maximum Matching of Players With Trainers
·1 分鐘
LeetCode Medium Two-Pointers Greedy Sorting Array
LeetCode 2410 解題筆記:兩邊都排序後,用同向雙指針讓最弱的球員配最小的、夠用的教練
LeetCode 3638: Maximum Balanced Shipments
·1 分鐘
LeetCode Medium Dynamic-Programming Greedy Monotonic-Stack Array
LeetCode 3638 解題筆記:貪心,一段一旦出現比這段最大值小的數就馬上切;因為切之前的那段是非遞減的,最大值就是前一個數
LeetCode 3627: Maximum Median Sum of Subsequences of Size 3
·1 分鐘
LeetCode Medium Math Greedy Sorting Game-Theory Array
LeetCode 3627 解題筆記:排序後每次拿最大的兩個和最小的一個,中位數是第二大的;答案是從尾端往前每隔一個取,共 n / 3 個
LeetCode 3075: Maximize Happiness of Selected Children
·1 分鐘
LeetCode Medium Array Greedy Sorting
LeetCode 3075 解題筆記:由大到小選 k 個,第 i 個選的會被扣 i,扣到 0 為止
LeetCode 611: Valid Triangle Number
·1 分鐘
LeetCode Medium Array Two-Pointers Binary-Search Greedy
LeetCode 611 解題筆記:排序後固定最長邊 k,左右指針找兩短邊:和夠大時中間的都可以,一次加 j - i 個