[LeetCode] Largest Rectangle in Histogram

来源:互联网 发布:多合一建站源码 编辑:程序博客网 时间:2024/06/09 23:41

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.

For example,
Given height = [2,1,5,6,2,3],

return 10.

class Solution {public:    int largestRectangleArea(vector<int> &height) {        int ans = 0,area;        stack<int> s;        height.push_back(0);        for(int i = 0;i < height.size();i ++){            if(s.empty() || !s.empty() && height[i] > height[s.top()])                s.push(i);            else{                while(!s.empty() && height[s.top()] > height[i]){                    int idx = s.top();                    s.pop();                    int width = s.empty() ? i : i - s.top() - 1;                    area = height[idx]*width;                    ans = max(ans,area);                }                s.push(i);            }        }        return ans;    }};


0 0
原创粉丝点击