您的位置:首页 > 其它

leetcode---largest-rectangle-in-histogram---栈

2018-01-21 17:48 323 查看
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 =10unit.

For example,

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

return10.

class Solution {
public:
int largestRectangleArea(vector<int> &height)
{
stack<int> s;
int ans = 0;

for(int i=0; i<height.size(); i++)
{
int cnt = 0;
if(s.empty() || s.top() <= height[i])
{
s.push(height[i]);
}
else
{
while(!s.empty() && s.top() > height[i])
{
++cnt;
ans = max(ans, cnt * s.top());
s.pop();
}
while(cnt--)
s.push(height[i]);
s.push(height[i]);
}
}

int cnt = 1;
while(!s.empty())
{
ans = max(ans, cnt * s.top());
++cnt;
s.pop();
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: