【代码随想录训练营】【Day60】【结营】第十章|单调栈|84.柱状图中最大的矩形

柱状图中最大的矩形

题目详细:LeetCode.84

详细的题解可查阅:《代码随想录》— 柱状图中最大的矩形

Java解法(单调栈):

class Solution {
    public int largestRectangleArea(int[] heights) {
        Stack<Integer> stack = new Stack<>();
        stack.push(0);
        List<Integer> newHeights = Arrays.stream(heights).boxed().collect(Collectors.toList());
        newHeights.add(0, 0);
        newHeights.add(heights.length + 1, 0);
        int res = 0;
        for(int i = 1; i < newHeights.size(); i++){
            while(newHeights.get(i) < newHeights.get(stack.peek())){
                int mid = stack.pop();
                int w = i - stack.peek() - 1;
                int h = newHeights.get(mid);
                res = Math.max(res, w * h);
            }
            stack.push(i);
        }
        return res;
    }
}

你可能感兴趣的:(代码随想录训练营,leetcode,算法)