[LeetCode]84. Largest Rectangle in Histogram

原创 2017年01月03日 17:27:23

https://leetcode.com/problems/largest-rectangle-in-histogram/

找到柱状图之中的最大矩形面积


找出以heights[i]为最小长度的矩形面积可得结果。这个矩形的面积为heights[i] * i位置左右两侧第一个小于heights[i]的位置差(不将晓宇height[i]的这两个左右位置记入宽中,因此为i - j - 1)。如何找到左右两边小于heights[i]的位置呢?当前遍历到的比heights[i]小的位置就是右侧index,用stack保存一个升序序列当前栈顶就是左侧index。而heights[i]为当前栈pop出的元素。最后要用一个0把stack里面的所有元素全部pop出来,计算出以其为最小长度的矩形面积。

public class Solution {
    public int largestRectangleArea(int[] heights) {
        // 始终保持升序序列
        Stack<Integer> stack = new Stack();
        int res = 0;
        for (int i = 0; i <= heights.length; i++) {
            int height = i == heights.length ? 0 : heights[i];
            while (!stack.isEmpty() && height <= heights[stack.peek()]) {
                int h = heights[stack.pop()];
                int j = stack.isEmpty() ? -1 : stack.peek();
                res = Math.max(res, h * (i - j - 1));
            }
            stack.push(i);
        }
        return res;
    }
}


相关文章推荐

[leetcode] 84. Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar i...

leetcode No84. Largest Rectangle in Histogram

Question: Given n non-negative integers representing the histogram's bar height where the width o...

LeetCode-84.Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is...

leetcode84: Largest Rectangle in Histogram

84. Largest Rectangle in Histogram height的内容是 [5,6,7,8,3],特点是除了最后一个,前面全部保持递增,且最后一个立柱的高度小于前面所有立柱高度。对...

[LeetCode] 84. Largest Rectangle in Histogram

[LeetCode] 84. Largest Rectangle in HistogramGiven n non-negative integers representing the histogra...

【LeetCode】84. Largest Rectangle in Histogram 解法及注释

84. Largest Rectangle in Histogram Total Accepted: 57808 Total Submissions: 239940 Difficulty: Har...

Leetcode 84. Largest Rectangle in Histogram 最大矩形 解题报告

1 解题思想这道题是说给了一个直方图,然后需要在里面找出一个最大的矩形。这道题的解题方式,就是要使用一个栈,保持一个持续上升的队列具体的请参照这个:http://blog.csdn.net/doc_s...
  • MebiuW
  • MebiuW
  • 2016年06月02日 10:41
  • 1561

[Leetcode] 84. Largest Rectangle in Histogram 解题报告

题目: Given n non-negative integers representing the histogram's bar height where the width of each ...

leetcode解题笔记:84. Largest Rectangle in Histogram

题目地址:84. Largest Rectangle in Histogram此题是求直方图中最大的矩形面积,思路就是:对于每一个高度为h直方图。找它左边第一个比它矮的位置i,右边第一个比他矮的位置j...

【C++】LeetCode 84. Largest Rectangle in Histogram

题目: Given n non-negative integers representing the histogram's bar height where the width of ea...
  • lv1224
  • lv1224
  • 2017年05月18日 11:55
  • 76
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode]84. Largest Rectangle in Histogram
举报原因:
原因补充:

(最多只允许输入30个字)