该程序在Python中找到3个相同总和的不重叠子列表的最大和

假设我们有一个称为nums和另一个值k的数字列表,我们必须找到给定大小为k的列表的三个不重叠子列表的最大和。

因此,如果输入像nums = [2,2,2,-6,4,4,4,4,-8,3,3,3] k = 3,那么输出将是27,因为我们可以选择子列表[2、2、2],[4、4、4]和[3、3、3],总计为27。

范例(Python)

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

class Solution:

   def solve(self, A, K):

      P = [0]

      for x in A:

         P.append(P[-1] + x)

      Q = [P[i + K] - P[i] for i in range(len(P) - K)]

      prefix = Q[:]

      suffix = Q[:]

      for i in range(len(Q) - 1):

         prefix[i + 1] = max(prefix[i + 1], prefix[i])

         suffix[~(i + 1)] = max(suffix[~(i + 1)], suffix[~i])

      return max(Q[i] + prefix[i - K] + suffix[i + K] for i in range(K, len(Q) - K))

ob = Solution()

nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3]

k = 3

print(ob.solve(nums, k))

输入值

[2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3], 3
输出结果
27

以上是 该程序在Python中找到3个相同总和的不重叠子列表的最大和 的全部内容, 来源链接: utcz.com/z/340732.html

回到顶部