84. 柱状图中最大的矩形
Posted 潜行前行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了84. 柱状图中最大的矩形相关的知识,希望对你有一定的参考价值。
- 柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。
示例 1:
输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10
class Solution {
public int largestRectangleArea(int[] heights) {
Stack<Integer> s = new Stack<>();
int max = 0;
int i = 0, index = 0;
int[] left = new int[heights.length]; // 保存左边都比当前高的最左值下标
for( ; i<heights.length; i++){
if(s.empty() || heights[i] >= heights[s.peek()]){
s.push(i);
left[i] = i;
continue;
}
while(s.size()!=0 && heights[i] < heights[s.peek()]){
index = s.pop();
max = Math.max(max, heights[index] * (i - left[index]));
}
left[i] = left[index];
if (heights[i] > 0) {
s.push(i);
}
}
while(s.size()!=0){
index = s.pop();
max = Math.max(max, heights[index] * (i - left[index]));
}
return max;
}
}
以上是关于84. 柱状图中最大的矩形的主要内容,如果未能解决你的问题,请参考以下文章