单调栈应用题目
单调栈专题,可以按照这个列表来刷。
- [LeetCode-42] 接雨水
- [LeetCode-239] 滑动窗口最大值
- [LeetCode-496] 下一个更大元素 I
- [LeetCode-503] 下一个更大元素 II
- [LeetCode-739] 每日温度
- [LeetCode-901] 股票价格跨度
- [HDU-5749] Colmerauer
- [HDU-4252] A Famous City
- [HDU-1506] Largest Rectangle in a Histogram
- [HDU-6319] Ascending Rating
- 最大矩形面积
1. 接雨水
# 最小栈接雨水 nums = [0,1,0,2,1,0,1,3,2,1,2,1] def trap(height): if not height: return 0 stack = [] res = 0 for i in range(len(height)): if stack: # 单调减,入栈 if height[i] <= height[stack[-1]]: stack.append(i) else: # 如果当前柱子都要比栈顶元素大,可以存储雨水,while循环里计算满足接水条件 while height[i] > height[stack[-1]]: stack_top = stack.pop() # pop之后检测是否还有元素,且栈顶元素高度等于前面弹出的高度,继续 while stack and height[stack[-1]] == height[stack_top]: stack_top = stack.pop() if stack: res += (i - stack[-1] -1) * (min(height[i], height[stack[-1]]) - height[stack_top]) else: break # 不计算了 stack.append(i) else: if height[i] != 0: stack.append(i) # 入栈&等于零不入栈 return res trap(nums)
时刻记着自己要成为什么样的人!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)