您的位置:首页 > 其它

Largest Rectangle in Histogram

2014-08-10 11:29 281 查看
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
.

维护一个不减栈,注意在height最后压入0,迫使栈的全部元素弹出。

class Solution {
public:
int largestRectangleArea(vector<int> &height) {
height.push_back(0);
stack<int> stk;
int i=0,maxArea=0;
while(i<height.size())
{
if(stk.empty()||height[i]>=height[stk.top()])
stk.push(i++);
else{
int t = stk.top();
stk.pop();
maxArea = max(maxArea, height[t] * (stk.e   mpty() ? i : i - stk.top()-1));
}
}
return maxArea;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: