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

360建站系统网站建设程序有哪些内容

360建站系统,网站建设程序有哪些内容,深圳宝安区1例确诊,0元购怎么在网站做文章目录 Day60 柱状图中最大的矩形题目思路代码 Day60 柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣(LeetCode) 题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图…

文章目录

  • Day60
    • 柱状图中最大的矩形
      • 题目
      • 思路
      • 代码

Day60

柱状图中最大的矩形

84. 柱状图中最大的矩形 - 力扣(LeetCode)

题目

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

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

思路

本题和42. 接雨水 (opens new window),是遥相呼应的两道题目

接雨水要查找的是右边第一个比元素大的值进行计算,所以使用了递增单调栈(从栈口到栈底)

本题要查找的是右边第一个比元素小的值进行计算,所以使用了递减单调栈(从栈口到栈底)

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

栈顶和栈顶的下一个元素以及要入栈的三个元素组成了我们要求最大面积的高度和宽度

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

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

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

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

细节:

末尾为什么要加元素0?

如果数组本身就是升序的,例如[2,4,6,8],那么入栈之后 都是单调递减,一直都没有走 情况三 计算结果的哪一步,所以最后输出的就是0了。 如图:

那么结尾加一个0,就会让栈里的所有元素,走到情况三的逻辑。

开头为什么要加元素0?

如果数组本身是降序的,例如 [8,6,4,2],在 8 入栈后,6 开始与8 进行比较,此时我们得到 mid(8),rigt(6),但是得不到 left。

(mid、left,right 都是对应版本一里的逻辑)

因为 将 8 弹出之后,栈里没有元素了,那么为了避免空栈取值,直接跳过了计算结果的逻辑。

之后又将6 加入栈(此时8已经弹出了),然后 就是 4 与 栈口元素 8 进行比较,周而复始,那么计算的最后结果resutl就是0。 如图所示:

代码

class Solution {public int largestRectangleArea(int[] heights) {int newHeights[] = new int[heights.length + 2];newHeights[0] = 0;newHeights[newHeights.length - 1] = 0;for(int i = 0; i < heights.length; i++) newHeights[i + 1] = heights[i];LinkedList<Integer> stack = new LinkedList<>();stack.push(0);int sum = 0;for(int i = 1; i < newHeights.length; i++){int position = stack.peek();if(newHeights[i] > newHeights[position]){stack.push(i);}else if(newHeights[i] == newHeights[position]){// 这里可以不做操作stack.pop();stack.push(i);}else{while(!stack.isEmpty() && newHeights[i] < newHeights[stack.peek()]){int mid = stack.peek();stack.pop();if(!stack.isEmpty()){int left = stack.peek();int right = i;int w = right - left - 1;int h = newHeights[mid];sum = Math.max(sum, w * h);}}stack.push(i);}}return sum;}
}
http://www.yayakq.cn/news/228828/

相关文章:

  • 网站营销与推广方案最专业网站建设哪家好
  • 外贸做哪个网站好宁波网站建设方案报价
  • 广州做网站公司电话凡科互动游戏怎么破解
  • 江西电信网站备案网站设计数据库怎么做
  • wordpress 导航网站模板下载中国互联网公司排名
  • 做的网站用户密码在哪里找网站开发需要多线程吗
  • 网站建设的意义和作用seo综合查询什么意思
  • 公司互联网站全面改版英语网站大全免费
  • 济宁华园建设有限公司网站安卓开发平台
  • 西安做网站公司有哪些做网站用python好还是PHP好
  • 网站设计常见问题用淘宝评论做网站
  • 网站建设项目需求费用flash网站制作实例
  • 成都微信网站建设多网站建设基本流程视频
  • 东莞集团网站建设规定天元建设集团有限公司上班时间
  • 酒店网站建设考虑的因素黑龙江快讯
  • 网站建设从零开始 教程百度小程序注册
  • 郑州网站建设工作室wordpress esc html
  • 电子销售网站报表模块如何做贵阳网页网站制作
  • 常见网站模式现在流行的网站开发
  • 沈阳企业网站怎样制作域名解析错误是怎么回事
  • 工业设计网站设计广告设计公司文案
  • 韩国 网站 域名营销网站推广策略
  • mvc5网站开发之六wordpress分享微信朋友圈
  • 灵璧县建设局网站自己建网站要多少钱
  • 青岛网站建设公司 中小企业补贴怎么建设影视网站
  • 国内创意网站界面设计创建网站平台
  • 泊头市做网站网络营销发展方案策划书
  • 亚洲网站正在建设中百度地图手机网站开发
  • 心悦dnf免做卡网站荆州 网站建设
  • 什么是电子商务网站建设建设路84号 网站备案