欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Largest Rectangle in Histogram

程序员文章站 2022-06-17 22:54:35
...

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.

Largest Rectangle in Histogram

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

 

Largest Rectangle in Histogram

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.

 

public class Solution {
    public int largestRectangleArea(int[] height) {
    	Stack<Integer> stack = new Stack<Integer>();
    	int i = 0;
    	int maxArea = 0;
    	int[] tmp = Arrays.copyOf(height, height.length+1);
    	while (i < tmp.length) {
    		if (stack.isEmpty() || tmp[stack.peek()] <= tmp[i]) {
    			stack.push(i++);
    		} else {
    			int t = stack.pop();
    			maxArea = Math.max(maxArea, tmp[t]*(stack.isEmpty() ? i: (i-stack.peek()-1)));
    		}
    	}
    	return maxArea;
    }
}