Largest Rectangle in Histogram

Largest Rectangle in Histogram


Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.


Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].


The largest rectangle is shown in the shaded area, which has area = 10 unit.

For example,
Given height = [2,1,5,6,2,3],
return 10.

Solution I


First solution comes to my mind is that For every rectangle, traverse all the rectangles before it and store current max area. If the height of current rectangle is less than or equals to next one, skip current rectangle to decrease time.


public class Solution {
    public int largestRectangleArea(int[] height) {
        if (height == null || height.length == 0)
            return 0;
            
        int max = 0;
        
        for (int i = 0; i < height.length; i++) {
            
            if (i + 1 < height.length && height[i] <= height[i + 1])
                continue;
                
            int min = height[i];
            
            for (int j = i; j >= 0; j--) {
                min = Math.min(min, height[j]);
                int maxArea = min * (i - j + 1);
                
                if (maxArea > max) {
                    max = maxArea;
                }
                
            }
        }
        
        
        return max;
    }
}








阅读更多
个人分类: Array
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Largest Rectangle in Histogram

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭