该程序在Python中查找最大的K子列表的总和

假设我们有一个称为nums的数字列表,另一个值为k,表示连接k次的大量nums列表。我们必须找到具有最大和的连续子列表的和。

因此,如果输入像nums = [1,3,4,-5],k = 1,那么输出将是11,因为我们可以像[2,4,5]那样使用子列表

为了解决这个问题,我们将遵循以下步骤-

  • s:= ans:= lo:= 0

  • 对于范围0到k的最小值和2的所有值,请执行

    • s:= s + x

    • lo:= lo,s的最小值

    • ans:= ans,s-lo的最大值

    • 对于每个以num为单位的x

    • 返回ans +最大值0和所有nums元素的总和*最大值0和(k-2)

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, nums, k):
          s = ans = lo = 0
          for _ in range(min(k, 2)):
             for x in nums:
                s += x
                lo = min(lo, s)
             ans = max(ans, s - lo)
          return ans + max(0, sum(nums)) * max(0, (k - 2))
    ob = Solution()nums = [2, 4, 5, -4]
    k = 1
    print(ob.solve(nums, k))

    输入值

    [2, 4, 5, -4], 1

    输出结果

    11
    猜你喜欢