leetcode做题笔记84柱状图最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
思路一:单调栈
-
int largestRectangleArea(int* heights, int heightsSize){
-
int top = -1;
-
int area, i;
-
int maxarea = 0;
-
int *stack = (int *)malloc(sizeof(int) * (heightsSize 2));
-
int *buff = (int *)malloc(sizeof(int) * (heightsSize 2));
-
-
buff[0] = 0;
-
for (int i = 1; i <= heightsSize; i ) {
-
buff[i] = heights[i - 1];
-
}
-
buff[heightsSize 1] = 0;
-
-
stack[ top] = 0;
-
for (i = 1; i < heightsSize 2; i ) {
-
while (top > 0 && buff[i] < buff[stack[top]]) {
-
area = (i - stack[top - 1] - 1) * buff[stack[top]];
-
maxarea = maxarea > area ? maxarea : area;
-
top--;
-
}
-
stack[ top] = i;
-
}
-
return maxarea;
-
}
分析:
本题利用单调栈的特性,有两种做法,一是直接从中间数向左右进行递归,判断是否单调递增或递减计算答案,第二种是多加一个空间,从最左边或最右边判断是否为单调递增或递减,此做法多设置了一个空间,利用单调栈向左单调递减的特性找最小值计算矩形的最大值,最后输出答案。
总结:
本题考察单调栈相关知识,利用单调递减递归找到最小值计算矩形大小,最后返回最大值
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiagheh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22