关注
第三题贴一个自己的思路,这是交卷后想到的,也不知道能否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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# offer帮选 #
4809739次浏览 29201人参与
# 0经验如何找实习? #
965次浏览 28人参与
# 百融云创求职进展汇总 #
3271次浏览 23人参与
# 校招薪资来揭秘 #
349151次浏览 1899人参与
# 产品每日一题 #
72116次浏览 639人参与
# OC/开奖 #
281763次浏览 1750人参与
# 你开始找寒假实习了吗? #
1485次浏览 18人参与
# 如果公司降薪,你会跳槽吗? #
108234次浏览 670人参与
# 实习,不懂就问 #
134953次浏览 1249人参与
# 跳槽时有那些注意事项 #
113157次浏览 581人参与
# 2025年终总结 #
20591次浏览 288人参与
# 你会为了工作牺牲生活吗? #
64350次浏览 433人参与
# Offer比较,你最看重什么? #
241830次浏览 1493人参与
# 职场新人体验 #
152711次浏览 1110人参与
# 第一份工作能做外包吗? #
88490次浏览 588人参与
# 硬件兄弟们 甩出你的华为奖状 #
117906次浏览 702人参与
# 25届暑期实习 #
1029931次浏览 20516人参与
# 实习中的菜狗时刻 #
449792次浏览 3516人参与
# 学历or实习经历,哪个更重要 #
204309次浏览 1086人参与
# 实习要如何选择和准备? #
125822次浏览 1478人参与
# uu们,春招你还来吗? #
17777次浏览 125人参与
