单调栈part3 | 84.柱状图中最大的矩形

news/2025/3/15 23:26:45/

文章目录

  • 84.柱状图中最大的矩形
    • 思路
    • 思路代码
    • 困难
  • 今日收获
  • 总结


84.柱状图中最大的矩形

思路

只有栈里从大到小的顺序,才能保证栈顶元素找到左右两边第一个小于栈顶元素的柱子。

所以本题单调栈的顺序正好与接雨水反过来。

此时大家应该可以发现其实就是栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度

理解这一点,对单调栈就掌握的比较到位了。

除了栈内元素顺序和接雨水不同,剩下的逻辑就都差不多了,在题解42. 接雨水 (opens new window)我已经对单调栈的各个方面做了详细讲解,这里就不赘述了。

主要就是分析清楚如下三种情况:

情况一:当前遍历的元素heights[i]大于栈顶元素heights[st.top()]的情况
情况二:当前遍历的元素heights[i]等于栈顶元素heights[st.top()]的情况
情况三:当前遍历的元素heights[i]小于栈顶元素heights[st.top()]的情况

思路代码

func largestRectangleArea(heights []int) int {stack:=[]int{}heights=append([]int{0},heights...)heights=append(heights,0)res:=0for i:=0;i<len(heights);i++{for len(stack)>0&&heights[i]<heights[stack[len(stack)-1]]{mid:=stack[len(stack)-1]stack=stack[:len(stack)-1]left:=stack[len(stack)-1]res=max(res,heights[mid]*(i-left-1))}stack=append(stack,i)}return res
}func max(i,j int)int{if i<j{return j}return i
}

困难

开头结尾+0


今日收获

接雨水和柱状图在使用单调栈的时候都是为了判断左右两侧宽度的值。

总结

第一遍完结!!后续贪心,动态规划和单调栈需要加强!!!
也要掌握常用的手撕比如树的遍历


http://www.ppmy.cn/news/813719.html

相关文章

系统字体大小设置

问题&#xff1a; 在项目中遇到需要修改字体大小的问题。当修改设置里面字体大小的时候&#xff0c;根据情况决定当前应用是否需要同步系统的字体大小。一般在需要完整显示字体的应用中有此需求。华为荣耀的手机桌面似乎就针对这个做了判断&#xff0c;不管系统字体修改成什么样…

【七天入门数据库】第一天 MySQL的安装部署

系列文章传送门&#xff1a; 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 MySQL数据库存在多种版本&#xff0c;不同的版本在不同的平台上&#xff08;OS&#xff0c;也就是操作系统上&a…

图床项目之公网发布和测试

项目发布和测试 一、http服务测试1.1、ab http压力测试1.2、post测试&#xff08;注册请求和登录请求&#xff09; 二、性能测试2.1、生成测试脚本2.2、上传测试2.2.1、单客户端测试本地上传到本机服务器2.2.2、如果使用集群的方式进行测试 2.3、下载测试2.4、删除测试2.5、测试…

华为网络设备交换机路由器查看ARP表项命令方法

描述&#xff1a;华为网络设备交换机路由器查看ARP表项命令方法 命令&#xff1a; display arp

ARP表和MAC表的区别

1.arp表是三层设备才有的&#xff0c;如&#xff1a;路由器、主机电脑&#xff0c;arp&#xff1a;地址解析协议&#xff0c;已知目标ip地址来获取目标mac地址。mac表二层设备才有&#xff0c;如交换机。 2.arp表&#xff1a;阐述ip地址与mac地址的对应关系&#xff0c;而mac表…

MAC表和ARP表的老化时间:

路由表&#xff1a;目的地址、网络掩码、下一条ip地址、出接口、优先级、cost路由开销 arp表&#xff1a;ip地址、对应的mac地址、ip地址类型 arp -a 命令用来查看计算机本地arp表 mac表&#xff1a;VLAN号 mac地址、出端口 MAC表老化时间 300S ARP表&#xff1a;思科是 5分钟…

MAC表、ARP表、IP路由表区别比较

作用生成方式组成存在设备MAC表数据链路层转发&#xff08;交换机根据数据帧的目的MAC地址查看MAC表&#xff0c;根据表项由相应接口转发出去&#xff09;根据数据帧的源MAC进行学习&#xff08;数据帧从那个接口进来的&#xff0c;就把该接口以及该帧的源MAC学习记录下来&…

关于路由表,ARP表,MAC表的一些理解

以下均为个人理解&#xff0c;如有不对之处&#xff0c;希望大家不吝指教。 数据在网络传输中有几个比较重要的东西&#xff1a;一个是IP地址&#xff0c;分为源地址和目的地址&#xff0c;一个是MAC地址&#xff0c;分为源MAC地址和目的MAC地址&#xff0c;发送一个信息需要填…