程序在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 defaultdictclass 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