84.Largest Rectangle in Histogram

1- Stack - O(n)

难想

class Solution {
    public int largestRectangleArea(int[] heights) {
        Stack<Integer> stack = new Stack<>();
        stack.push(-1);
        int ans = 0;
        for(int i = 0; i < heights.length; i++){
            while(stack.peek() != -1 && heights[stack.peek()] >= heights[i]){
                ans = Math.max(ans, heights[stack.pop()] * (i - 1 - stack.peek()));
            }
            stack.push(i);
        }
        while(stack.peek() != -1){
            ans = Math.max(ans, heights[stack.pop()] * (heights.length - 1 - stack.peek()));
        }
        return ans;
    }
}

results matching ""

    No results matching ""