程序在Python中弹出某些堆栈后检查所有堆栈的最大和

假设我们有一个堆栈列表,我们可以取一个或多个堆栈,并从中弹出任意数量的元素。我们必须找到可以实现的最大总和,以使所有堆栈具有相同的总和值。

因此,如果输入就像stacks = [[3,4,5,6],[5,6,1,4,4],[10,2,2,2]],那么输出将为12,因为我们可以进行-

  • 从第一个堆栈中弹出[6],我们得到[3,4,5]的总和为12。

  • 从第二个堆栈中弹出[4,4],我们得出[5,6,1]的总和为12。

  • 从第三个堆栈中弹出[2,2],我们得出[10,2]的总和为12。

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

  • 总和:=一个空的映射

  • 对于堆栈中的每个stk,执行

    • s:= s + n

    • 总和[s]:=总和[s] + 1

    • s:= 0

    • 对于stk中的每个n,执行

    • 回答:= 0

    • 对于和的每个键值对(s,f),

      • ans:= s

      • 如果f> =堆栈计数且s> ans,则

    • 返回ans

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

    示例

    from collections import defaultdict

    class Solution:

       def solve(self, stacks):

          sums = defaultdict(int)

          for stk in stacks:

             s = 0

             for n in stk:

                s += n

                sums[s] += 1

             ans = 0

             for s, f in sums.items():

                if f >= len(stacks) and s > ans:

                   ans = s

             return ans

    ob1 = Solution()stacks = [

       [3, 4, 5, 6],

       [5, 6, 1, 4, 4],

       [10, 2, 2, 2]

    ]

    print(ob1.solve(stacks))

    输入值

    stacks = [ [3, 4, 5, 6], [5, 6, 1, 4, 4], [10, 2, 2, 2] ]

    输出结果

    12

    以上是 程序在Python中弹出某些堆栈后检查所有堆栈的最大和 的全部内容, 来源链接: utcz.com/z/316849.html

    回到顶部