6/09/2014

116. Largest Rectangle in Histogram

public class Solution {
    public int largestRectangleArea(int[] height) {
        if (height==null || height.length==0) return 0;
       
        Stack<Integer> stack = new Stack<Integer>();
        int max = 0;
       
        for (int i=0; i<=height.length; i++) {
            int curt = (i==height.length)?-1:height[i];
            while (!stack.isEmpty() && curt<=height[stack.peek()]) {
                int h = height[stack.pop()];
                int w = stack.isEmpty()?i:i-stack.peek()-1;
                max = Math.max(max, h*w);
            }
            stack.push(i);
        }
       
        return max;
    }
}

没有评论:

发表评论