当前位置: 首页 > news >正文

小企业网站建设平台免费二级域名平台

小企业网站建设平台,免费二级域名平台,小颜自助建站系统,如何做网站 写代码刷题 84.柱状图中最大的矩形 题目链接 | 文章讲解 | 视频讲解 题目&#xff1a;给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.len…

刷题

84.柱状图中最大的矩形

题目链接 | 文章讲解 | 视频讲解

题目:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

  • 1 <= heights.length <=10^5

  • 0 <= heights[i] <= 10^4

思路及实现

42. 接雨水 是找每个柱子左右两边第一个大于该柱子高度的柱子,而本题是找每个柱子左右两边第一个小于该柱子的柱子。

这里就涉及到了单调栈很重要的性质,就是单调栈里的顺序,是从小到大还是从大到小

在题解42. 接雨水中我讲解了接雨水的单调栈从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。

那么因为本题是要找每个柱子左右两边第一个小于该柱子的柱子,所以从栈头(元素从栈头弹出)到栈底的顺序应该是从大到小的顺序!

我来举一个例子,如图:

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

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

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

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

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

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

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

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

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

代码如下:

class Solution {int largestRectangleArea(int[] heights) {Stack<Integer> st = new Stack<Integer>();// 数组扩容,在头和尾各加入一个元素int [] newHeights = new int[heights.length + 2];newHeights[0] = 0;newHeights[newHeights.length - 1] = 0;for (int index = 0; index < heights.length; index++){newHeights[index + 1] = heights[index];}heights = newHeights;st.push(0);int result = 0;// 第一个元素已经入栈,从下标1开始for (int i = 1; i < heights.length; i++) {// 注意heights[i] 是和heights[st.top()] 比较 ,st.top()是下标if (heights[i] > heights[st.peek()]) {st.push(i);} else if (heights[i] == heights[st.peek()]) {st.pop(); // 这个可以加,可以不加,效果一样,思路不同st.push(i);} else {while (heights[i] < heights[st.peek()]) { // 注意是whileint mid = st.peek();st.pop();int left = st.peek();int right = i;int w = right - left - 1;int h = heights[mid];result = Math.max(result, w * h);}st.push(i);}}return result;}
}
http://www.tj-hxxt.cn/news/38347.html

相关文章:

  • 网站相关推荐怎么做发软文
  • 网站做流量推广文章的推广渠道
  • 万能小偷程序做网站西安seo优化系统
  • 网站做推广页需要什么软件有哪些网站推广与优化平台
  • 新闻网站想备案新东方英语培训机构官网
  • 做信公众号首图的网站网站统计数据分析
  • 企业网站建设联系方式seo关键词怎么选
  • 高明做网站游戏推广员平台
  • 网站建设和技术支持重庆关键词seo排名
  • wap asp网站模板下载百度网络营销的概念
  • 互联网公司网站模板seo的五个步骤
  • 网站优化人员2023新闻热点摘抄
  • 网站建设成本计划深度优化
  • 做网站开发需要学什么软件自己建网页
  • 网站建设开发的目的做推广网络
  • 三亚房产做公示是什么网站友情链接交换统计表
  • 深圳外包网站制作公司滨州网站建设
  • 建设网站是哪个部门负责营销手机系统安装
  • 如何做网站广告图片青岛网站制作公司
  • ysl免费网站建设网络运营培训班多少钱
  • 织梦后台做的网站怎么绑定域名成免费crm特色
  • 文章修改网站网络开发
  • 网站服务器租用开票应该口碑营销的成功案例
  • 同城分类信息网站seo点击排名软件营销工具
  • 网站开发用什么好河南整站关键词排名优化软件
  • 百度免费seo湖南网站建设seo
  • 想把一个网站屏蔽了怎么做系统优化大师
  • 湖南在线淘宝怎样优化关键词
  • 遵义做网站多少钱网址提交入口
  • 网站建设 用什么语言营销网站系统