LeetCode 84.柱状图中最大矩形的面积

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

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

以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]

图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

示例:

1输入: [2,1,5,6,2,3] 2输出: 10算法:单调栈。此题是利用栈来解决问题最经典的题目之一。我们可以观察得出,矩形所围成的最大面积取决于它左边跟右边第一个小的矩形的长,为此我们可以维护一个单调栈 3 4class Solution { 5public: 6 int largestRectangleArea(vector<int>& heights) { 7 int n=heights.size(),ans=0; 8 heights.push_back(-1); 9 stack<int>stk; 10 for(int i=0;i<=n;i++){ 11 while(!stk.empty()&&heights[i]<heights[stk.top()]){ 12 int cur=stk.top(); 13 stk.pop(); 14 if(stk.empty()) 15 ans=max(ans,heights[cur]*i); 16 else 17 ans=max(ans,heights[cur]*(i-stk.top()-1)); 18 } 19 stk.push(i); 20 } 21 return ans; 22 } 23};
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python使用Plotly绘图工具,绘制柱状图

使用Plotly绘制基本的柱状图,需要用到的函数是graph\_objs中Bar函数通过参数,可以设置柱状图的样式。通过barmod进行设置可以绘制出不同类型的柱状图出来。我们先来实现一个简单的柱状图:coding:utf8importplotlyaspyimportplotly

Pyhon数据分析20——matplotlib可视化(二)之柱状图

atplotlib绘制柱状图柱状图(barchart),是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况,用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用于较小的数据集分析。柱状图亦可横向排列,或用多维方式表达。准备importnumpyasnpimport

LeetCode 84.柱状图中最大矩形的面积 - HelloWorld