码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-84-Largest Rectangle in Histogram

时间:2019-02-14 13:28:37      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:max   amp   ||   output   .com   nbsp   etc   最大   NPU   

算法描述:

Given n non-negative integers representing the histogram‘s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

 

技术图片
Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].

 

技术图片
The largest rectangle is shown in the shaded area, which has area = 10 unit.

 

Example:

Input: [2,1,5,6,2,3]
Output: 10

解题思路:用栈辅助。维护一个升序的栈。当新元素小于栈顶元素,弹出该元素,并计算机最大面积。

    int largestRectangleArea(vector<int>& heights) {
        if(heights.size()==0) return 0;
        stack<int> stk;
        int maxArea = 0;
        int i=0;
        while(i < heights.size()){
            if(stk.empty() || heights[i] >= heights[stk.top()]){
                stk.push(i);
                i++;
            }else{
                int index = stk.top();
                stk.pop();
                maxArea = max(maxArea, heights[index]*(stk.empty()? i: i-stk.top()-1));
            }

        }
        while(!stk.empty()){
            int index = stk.top();
            stk.pop();
            maxArea = max(maxArea, heights[index]*(stk.empty()?i:i-stk.top()-1));
        }
        return maxArea;
        
    }

 

LeetCode-84-Largest Rectangle in Histogram

标签:max   amp   ||   output   .com   nbsp   etc   最大   NPU   

原文地址:https://www.cnblogs.com/nobodywang/p/10373984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!