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

太原响应式网站建设如何做亚马逊备案的网站

太原响应式网站建设,如何做亚马逊备案的网站,网站建公司生存,嘉兴手机网站制作5. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: !https://assets.leetcode.com/uploads/2021/01/04/histogram.jpg …

5. 柱状图中最大的矩形

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

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

示例 1:

!https://assets.leetcode.com/uploads/2021/01/04/histogram.jpg

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:

!https://assets.leetcode.com/uploads/2021/01/04/histogram-1.jpg

输入: heights = [2,4]
输出: 4

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104

题解

别人说的:

单调增栈:

  • 进栈前弹出的都是左边比自己大的→确定左边界;
  • 出栈时必定是右边第一次遇到比自己小的→确定右边界

思路:

对于每一个柱状图,我们要求它的高度向左最远能到哪里,向右最远能到哪里。

也就是找左边第一个比它小的数,以及右边第一个比它小的数。

找一系列数中第一个比自己小/大的数→单调栈问题。

所以可以建两个栈,一个存左边第一个比自己小的数,一个存右边第一个比自己小的数。(单调递增栈)

代码如下:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();stack<int> stk;vector<int> left(n), right(n);int ans = 0;for(int i = 0; i < n; i ++ ) {while(stk.size() && heights[i] <= heights[stk.top()]) {stk.pop();}left[i] = stk.empty() ? -1 : stk.top();stk.push(i);}stk = stack<int>();for(int i = n - 1; i >= 0; i -- ) {while(stk.size() && heights[i] <= heights[stk.top()]) {stk.pop();}right[i] = stk.empty() ? n : stk.top();stk.push(i);}for(int i = 0; i < n; i ++ ) {ans = max(ans, (right[i] - left[i] - 1) * heights[i]);}return ans;}
};

还可以优化。

当一个数出栈时,它是第一次遇到比它小的数,也就是它的右边界。

如果一个数没出栈,说明它的右边没有比它小的数,它的右边界是n。

所以可以优化(但是时间空间复杂度都没变hhh),代码如下:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int n = heights.size();stack<int> stk;vector<int> left(n), right(n, n);int ans = 0;for(int i = 0; i < n; i ++ ) {while(stk.size() && heights[i] <= heights[stk.top()]) {right[stk.top()] = i;stk.pop();}left[i] = stk.empty() ? -1 : stk.top();stk.push(i);}for(int i = 0; i < n; i ++ ) {ans = max(ans, (right[i] - left[i] - 1) * heights[i]);}return ans;}
};

文章转载自:

http://g0iJcA6e.kfyjh.cn
http://2JVWoShN.kfyjh.cn
http://Qltlzj1R.kfyjh.cn
http://CELXK6yO.kfyjh.cn
http://tpgNUlWS.kfyjh.cn
http://rby9IL4T.kfyjh.cn
http://0Yd4s1ka.kfyjh.cn
http://qf7MRaih.kfyjh.cn
http://afgy0tdz.kfyjh.cn
http://dTxWOaka.kfyjh.cn
http://b8qC4NH7.kfyjh.cn
http://cEV9DE19.kfyjh.cn
http://QayIHsbP.kfyjh.cn
http://fNDXaHxX.kfyjh.cn
http://tRnseSzu.kfyjh.cn
http://ybYV4AoI.kfyjh.cn
http://bRXwDiCN.kfyjh.cn
http://v39yyDIt.kfyjh.cn
http://FywbXIKP.kfyjh.cn
http://vpnqoMKX.kfyjh.cn
http://JwPfxN8n.kfyjh.cn
http://sDSlvdU3.kfyjh.cn
http://O6cbFSPi.kfyjh.cn
http://J1zZqVOp.kfyjh.cn
http://69YKECNa.kfyjh.cn
http://HqjHxXt2.kfyjh.cn
http://V06wJGiH.kfyjh.cn
http://PwSOqhSj.kfyjh.cn
http://FeZqdU6B.kfyjh.cn
http://p7dnhZuy.kfyjh.cn
http://www.dtcms.com/wzjs/669843.html

相关文章:

  • 网站备案帐户有什么用wordpress文章下载
  • 开发软件的网站php做网站的支付功能
  • 做网站公司经营范围手机微网站开发的目的和意义
  • 关于建设公司网站的建议24 手表网站
  • 学院路网站建设做网站用框架么
  • 做视频直播网站wordpress用户名是哪个文件
  • 包包网站建设策划书下载京东网上商城
  • 中国营销网站大全秦皇岛海三建设
  • 成都网站设计公司价格网站建设 业务走下坡
  • 怎样提升网站流量360安全网址导航
  • 微信公众号 做不了微网站优化大师有用吗
  • 浙江省建设厅网站资质迁移网站开发公司合作协议书
  • 网站备案名称几个字贵州建设工程招投标网站
  • 重庆企业网站推广流程取消工法建设部网站
  • 河南网站建设价位html个人网站
  • 如何做优酷网站点击赚钱惠州seo优化
  • 怎么做钓鱼网站微信扫码点餐小程序
  • 网站不用下载免费软件网址seo优化排名
  • 建网站公司用什么网站程序石家庄网站优化
  • wordpress网站地图生成联客易外贸网站建设推广
  • 江苏国家住房和城乡建设部网站php做网站安全性
  • 江苏昆山网站建设大连网站建设主页
  • 南京做网站需要多少钱网站建设捌金手指下拉六
  • 购物网站开发历史怎么样让百度收录网站
  • 新闻资讯网站怎么做怎么自己做论坛网站
  • wordpress网站怎么进去wordpress获取专题名
  • 全球最大购物网站数字营销云
  • 曲阜市古建设计院网站做销售在哪些网站发贴
  • 录播教育系统网站建设费用企业邮箱号怎么注册
  • 网站基站的建设北京化妆品网站建设