力扣-单调栈

单调栈

直方图的最大矩形面积

力扣-单调栈_第1张图片
力扣-单调栈_第2张图片
思路
寻找最大矩形面积,可以获取小于当前柱子高度的左右两个柱子位置,以这两个边界柱子距离为宽,当前柱子为高求得以当前柱子为最低柱子的最大面积。
力扣-单调栈_第3张图片
使用一个栈存储单调递增的数据下标,当遇到递减值时则执行出栈计算面积操作。

class Solution {
   
    public int largestRectangleArea(int[] heights) {
   
        LinkedList<Integer> li = new LinkedList<>();
        int max = 0;
        li.push(-1);
        for (int i = 0; i < heights.length; i++) {
   
            while(li.peek() != -1 && heights[li.peek()] > heights[i

你可能感兴趣的:(算法,leetcode,算法,java)