【LeetCode】84. 柱状图中最大的矩形
84. 柱状图中最大的矩形
知识点:单调栈;
题目描述
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
示例
解法一:暴力法
以每个元素为中心向左右扩散,这个元素就是这个高度。
解法二:单调栈
上面的解法需要去寻找每个元素它左右两边第一个比它小的元素下标,这时候就可以确定宽度进而确定面积了。第一个比它大或者小的,这不就是可以用单调栈吗?
可以维持一个单调递增栈,if遇到更大的元素,那以它为高的矩形还不能确定,当遇到小的时候,对于栈顶元素而言,栈的下一个元素比其小,要入栈的比其小,所以矩形就确定了。
想一下栈里应该存什么,求面积无非就是宽乘以高,if存高度,那宽度就没有办法确定,但是if是存下标,那宽度和高度都可以确定。
对于单调栈的问题,重点是要弄清楚当元素出栈的时候,意味着什么。比如寻找一个数组里第一个比它大的元素,那就可以维持一个单调递减栈。当遇到大的元素时,出栈。这时候出栈就意味着找到了第一个比自己大的元素;对于这个题,出栈就意味着确定了以它为高的矩阵。
- 未优化
- 优化
在首尾各加一个高度为0,这时候就不用单独判断了,因为任何值都会比0大,所以都会入栈,又因为任何值都比0大,所以都会出栈;
相关链接
__EOF__

本文作者:Curryxin
本文链接:https://www.cnblogs.com/Curryxin/p/16100474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Curryxin/p/16100474.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了