关注
第三题贴一个自己的思路,这是交卷后想到的,也不知道能否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)
查看原帖
点赞 评论
牛客热帖
更多
正在热议
更多
# 实习,不懂就问 #
2375次浏览 43人参与
# 小米提前批笔试难吗 #
34092次浏览 357人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
13068次浏览 134人参与
# 26届校招投递进展 #
31428次浏览 243人参与
# 央国企投递记录 #
88120次浏览 1361人参与
# 为了找工作你花了哪些钱? #
28041次浏览 265人参与
# 神州信息工作体验 #
11628次浏览 56人参与
# 校招第一份工作你干了多久? #
85855次浏览 392人参与
# 外包能不能当跳板? #
34481次浏览 221人参与
# 你觉得专业和学校哪个对薪资影响最大 #
61364次浏览 490人参与
# 设计人的面试记录 #
123473次浏览 1341人参与
# 小米硬件提前批进度交流 #
168148次浏览 1523人参与
# 来聊聊你目前的求职进展 #
634332次浏览 6747人参与
# 如何缓解入职前的焦虑 #
192456次浏览 1340人参与
# 硬件人秋招的第一个offer #
77947次浏览 1149人参与
# 硬件人你反向读研了吗 #
42526次浏览 637人参与
# 大疆的机械笔试比去年难吗 #
72919次浏览 618人参与
# 你今年的保底offer是哪家 #
118410次浏览 537人参与
# 打工人的精神状态 #
49745次浏览 863人参与
# 烟草笔面经互助 #
16928次浏览 180人参与
# 硬件人,你被哪些公司给挂了 #
58546次浏览 821人参与