从 Python 中的列表中查找每个子列表的最小值之和的程序
假设我们有一个名为nums的数字列表。我们必须找到nums中每个子列表x的最小值的总和。如果答案太大,则将结果修改为10^9+7。
因此,如果输入类似于nums=[5,10,20,10,0],那么输出将是90,因为子列表是[[5],[10],[20],[10],[0],[5,10],[10,20],[20,10],[10,0],[5,10,20],[10,20,10],[20,10,0],[5,10,20,10],[10,20,10,0],[5,10,20,10,0]],它们的最小值为[5,10,20,10,0,5,10,10,0,5,10,0,5,0,0],所以总和是90。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums):
ans = 0
s = []
temp_sum = 0
for index, value in enumerate(nums):
while s and value <= s[-1][1]:
temp_sum -= s[-1][2]
s.pop()
if not s:
s.append([index, value, (index + 1) * value])
else:
s.append([index, value, (index - s[-1][0]) * value])
temp_sum += s[-1][2]
ans += temp_sum
return ans % (10**9 + 7)
nums = [5, 10, 20, 10, 0]
print(solve(nums))输入
[5, 10, 20, 10, 0]输出结果
90
热门推荐
7 简短平安夜祝福语
10 结婚古风祝福语 唯美简短
11 元旦祝福语简短创意可爱
12 小博士贺卡祝福语简短
13 简短古诗词祝福语
14 河北抗疫祝福语 简短
15 毕业祝福语发言搞笑简短
16 蒙古人祝福语简短
17 送给外婆祝福语简短的话
18 伴娘新婚快乐祝福语简短