leetcode-84柱状图中最大的矩形(单调栈)「建议收藏」

leetcode-84柱状图中最大的矩形(单调栈)「建议收藏」原题链接给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10题解对于每一个长方体,找出左边比他小的第一个长方体和右边比他小的第一个长方体,然后遍历求结即可class Solution {public

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

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

求在该柱状图中,能够勾勒出来的矩形的最大面积。
在这里插入图片描述
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
在这里插入图片描述
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

示例:

输入: [2,1,5,6,2,3]
输出: 10

题解
对于每一个长方体,找出左边比他小的第一个长方体和右边比他小的第一个长方体,然后遍历求结即可

class Solution { 

public:
int largestRectangleArea(vector<int>& heights) { 

vector<int>left,right;
stack<int>stk;
for(int i = 0;i < heights.size();i ++){ 

while(!stk.empty() && heights[stk.top()] >= heights[i])stk.pop();
if(stk.empty())left.push_back(-1);
else left.push_back(stk.top());
stk.push(i);
}
while(!stk.empty())stk.pop();
for(int i = heights.size() - 1;i >= 0;i --){ 

while(!stk.empty() && heights[stk.top()] >= heights[i])stk.pop();
if(stk.empty())right.push_back(heights.size());
else right.push_back(stk.top());
stk.push(i);
}
reverse(right.begin(),right.end());
int res = 0;
for(int i = 0;i < heights.size();i ++){ 

res = max(res, heights[i] * (right[i] - left[i] - 1));
}
return res;
}
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168897.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 电路实习报告:简易收音机的焊接

    电路实习报告:简易收音机的焊接本文是本科生电路实习(焊接部分)的实习报告

    2022年10月24日
  • QTime 计时(正计时)

    #include<QDebug>#include<QTime>Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);QTimetime;time.start();//开始计时qDebug()<<QTime::currentTime().msec();//打印当前时间

  • 近场动力学matlab程序_一阶惯性环节matlab

    近场动力学matlab程序_一阶惯性环节matlab本发明属于过程控制技术领域,尤其涉及一种镇定一阶惯性加纯滞后系统的线性自抗扰控制器设计方法,进一步涉及一种用于具有时滞的工业过程控制系统的自抗扰控制器设计方法。背景技术:时滞作为一种常见的物理现象,在工业过程和生产生活中随处可见,例如管道对油气的输送、线缆对信号的传递、锅炉的燃烧等过程。这一类过程具有的共性即被控量不能立即对控制量的作用做出反应,这样的特点决定了被控对象输入与输出之间不同步的开环特…

  • window10安装mysql8.0_win7安装MySQL所需环境

    window10安装mysql8.0_win7安装MySQL所需环境mysql官网找到下载–>拉到最下面找到社区版下载–>下载下面是我下载好的度盘链接提取码:sws3解压到指定目录此时解压后的文件中没有data目录和ini文件然后做环境变量,也可以最后再做win7和windowsserver2008r2做环境变量都是在Path里用分号隔开前面的路径,直接加上mysql的bin目录绝对路径即…

  • bt种子天堂_虫部落搜索引擎大全

    bt种子天堂_虫部落搜索引擎大全本来这个技术含量不足以写进博客的,不过想想好久不写博客都快把markdown语法忘了(汗颜),之前做的信安比赛的项目未来会写一篇总结。代码比较短,直接就着代码加注释讲吧:下载后如下:具体的使用方

  • Linux 镜像文件ISO下载地址、centos网络配置:[通俗易懂]

    Linux 镜像文件ISO下载地址、centos网络配置:[通俗易懂]Linux镜像文件ISO下载地址:http://archive.kernel.org/centos-vault/6.1/isos/x86_64/选择:CentOS-6.1-x86_64-bin-DVD1.iso下载就OK,下载后可以在虚拟机上进行运行。…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号