[leetcode] 84. Largest Rectangle in Histogram

来源:互联网 发布:ubuntu安装百度输入法 编辑:程序博客网 时间:2024/06/06 09:54

Largest Rectangle in Histogram

描述

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 heights = [2,1,5,6,2,3],
return 10.

我的代码

详细算法解析见上以篇博客只含1最大子矩阵

class Solution {public:    int largestRectangleArea(vector<int>& heights) {        if (heights.empty())        {            return 0;        }        stack<int> s;        s.push(0);        int l,r;        int max=heights[0], tmpSize;        int len=heights.size();        for (int i=1; i<len; i++)        {            while (!s.empty() && heights[i] <=  heights[s.top()])            {                r=i;                int e=s.top();                s.pop();                l=s.empty()?-1:s.top();                tmpSize=(r-l-1)*heights[e];                if (tmpSize > max)                    max = tmpSize;            }            s.push(i);        }        while (!s.empty())        {            r=len;            int e=s.top();            s.pop();            l=s.empty()?-1:s.top();            tmpSize=(r-l-1)*heights[e];            if (tmpSize > max)                max = tmpSize;        }        return max;      }};
0 0
原创粉丝点击