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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告