84. 柱状图中最大的矩形

Posted 潜行前行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了84. 柱状图中最大的矩形相关的知识,希望对你有一定的参考价值。

  1. 柱状图中最大的矩形

给定 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. 柱状图中最大的矩形的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode84. 柱状图中最大的矩形

Leetcode 84.柱状图中最大的矩形

5.30——84. 柱状图中最大的矩形

5.30——84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形 | Python

LeetCode 84. 柱状图中最大的矩形 | Python