Python程式:從兩端移除K個數後求最大和


假設我們有一個名為nums的數字列表和另一個值k。我們必須找到可以刪除的元素的最大和,前提是我們必須恰好彈出k次,每次彈出可以從左端或右端進行。

因此,如果輸入類似於nums = [2, 4, 5, 3, 1] k = 2,則輸出將為6,因為我們可以刪除2和4。

為了解決這個問題,我們將遵循以下步驟:

  • window := 從索引0到k-1的所有數字的和
  • ans := window
  • 對於範圍1到k的i,執行以下操作:
    • window := window - nums[k - i]
    • window := window + nums[-i]
    • ans := ans和window中的最大值
  • 返回ans

讓我們來看下面的實現,以便更好地理解:

示例

 線上演示

class Solution:
   def solve(self, nums, k):
      window = sum(nums[:k])
      ans = window
      for i in range(1, k + 1):
         window -= nums[k - i]
         window += nums[-i]
         ans = max(ans, window)
      return ans
ob = Solution()
nums = [2, 4, 5, 3, 1]
k = 2
print(ob.solve(nums, k))

輸入

[2, 4, 5, 3, 1], 2

輸出

6

更新於:2020年11月20日

352 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告