在 Python 中,程序在弹出一些元素后检查所有堆栈的最大和
pythonserver side programmingprogramming更新于 2026/2/4 1:48:17
假设我们有一个堆栈列表,我们可以取出任意一个或多个堆栈并从中弹出任意数量的元素。我们必须找到可以实现的最大和,以使所有堆栈都具有相同的总和值。
因此,如果输入为 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。
为了解决这个问题,我们将遵循这些步骤 −
sums := 一个空的映射
对于 stacks 中的每个 stk,执行
s := 0
对于 stk 中的每个 n,执行
s := s + n
sums[s] := sums[s] + 1
ans := 0
对于 sums 的每个键值对 (s, f),执行
如果 f >= stack count 并且 s >答案,然后
ans := s
返回 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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

