关注
第三题贴一个自己的思路,这是交卷后想到的,也不知道能否AC
思路:两个单调栈,先得到一个单调递减栈, 后得到一个单调递增栈,函数图像相当于一个V字形
步骤一:两个栈都不为空,则递增栈的最大,匹配递减栈的最小,循环直到一个栈为空
步骤二:递减栈为空,递增栈不为空,则递增栈最大值匹配最小值,循环操作直到栈空或者只剩一个元素,把这个元素接到递减栈后面去
import sys
n = int(input())
num = list(map(int, sys.stdin.readline().strip().split()))
s1 = [float("inf")]
s2 = [float("-inf")]
idx, res = 0, 0
while idx < n:
while idx < n and num[idx] <= s1[-1]:
s1.append(num[idx])
idx += 1
while idx < n and num[idx] >= s2[-1]:
s2.append(num[idx])
idx += 1
while len(s1) > 1 and len(s2) > 1 and s2[-1] > s1[-1]:
print(s2[-1], s1[-1])
res += s2[-1] - s1[-1]
s2.pop()
s1.pop()
while len(s2) >= 3:
res += s2[-1] - s2[1]
s2.pop()
s2.pop(1)
s1 += s2[1:]
s2 = [float("-inf")]
print(res)
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
346899次浏览 3362人参与
# 我的实习求职记录 #
6081451次浏览 83644人参与
# 阿里云管培生offer #
40734次浏览 876人参与
# 地方国企笔面经互助 #
5024次浏览 13人参与
# 职场吐槽大会 #
90093次浏览 743人参与
# 选完offer后,你后悔学本专业吗 #
22773次浏览 164人参与
# 百度开奖 #
196838次浏览 1304人参与
# ai智能作图 #
1994次浏览 47人参与
# 运营商笔面经互助 #
92283次浏览 1331人参与
# 实习中的菜狗时刻 #
278458次浏览 2737人参与
# 如果有时光机,你最想去到哪个年纪? #
24025次浏览 488人参与
# 风评不好的公司,你会去吗? #
20626次浏览 94人参与
# 国企还是互联网,你怎么选? #
89987次浏览 699人参与
# 软件开发2024笔面经 #
2324871次浏览 48213人参与
# 如何一边实习一边秋招 #
999379次浏览 12694人参与
# 远程面试的尴尬瞬间 #
20279次浏览 293人参与
# 银行笔面经互助 #
84559次浏览 893人参与
# 腾讯求职进展汇总 #
198031次浏览 1650人参与
# 第一份工作应该选择高薪还是大平台 #
88864次浏览 590人参与
# bilibili求职进展汇总 #
33869次浏览 361人参与
# 阿里求职进展汇总 #
70690次浏览 757人参与
# 上班苦还是上学苦呢? #
80018次浏览 765人参与