单调栈
刷到好多道单调栈的题了,但是不会,难,不知道怎么用,什么时候用
1啥是单调栈
栈知道吧,一头进出
单调知道吧,有序
单调栈知道了吧,存储的元素有序的栈,
但是单调增栈呢,弹出来的元素是递增的
2啥时候用
为任意一个元素找左边和右边第一个比自己大/小的位置用单调栈
一般化:“在一维数组中找第一个满足某种条件的数”的场景就是典型的单调栈应用场景。
3怎么用
注意!
这个单调栈不是改变了入栈时元素存储位置的规则
而是按照元素单调的原则入栈,就是入栈时就保证了这个元素进去就是单调的
或者:
栈记录的是索引,而索引对应的元素是单调的
3.1 注意
入栈的元素如果不满足条件怎么办,
划重点!!!
先出栈,直到能保证单调特征为止,
这也是为啥可以用于“在一维数组中找第一个满足某种条件的数”的场景就是典型的单调栈”应用场景
例如:元素按规则入栈,6入栈了,该入栈2了,这时候发现进不去,所以2是6右边第一个xiaoyu
例子来源:
https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/84-by-ikaruga/
3为啥这么用
接雨水的题
对每一列,他能接到的雨水的量,等于他的高度和他两侧比他高的里面的矮的那个的高度差
本文来自博客园,作者:荧惑微光,转载请注明原文链接:https://www.cnblogs.com/yinghuoweiguang/p/16038822.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现