单调栈-LeetCode 84. 柱状图中最大的矩形

LeetCode 84. 柱状图中最大的矩形

运用递增单调栈,求取最小值的右区间

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        if(heights.size() <= 0) return 0;
        int maxArea = 0;
        stack<int> s;
        s.push(0);
        heights.push_back(0);
        for(int i=1;i<heights.size();i++){
            while(!s.empty() && heights[s.top()] > heights[i]){
                int cur = s.top();
                s.pop();
                maxArea = max(maxArea,heights[cur]*(s.empty()? i:i-s.top()-1));
            }
            s.push(i);
        }
        return maxArea;
    }
};
posted @ 2019-07-20 18:03  zz2108828  阅读(249)  评论(0编辑  收藏  举报