题目:
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.
给n个非负数代表直方图每个长条的高度,每个长条的宽度是1,找出直方图中最大的矩形。
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)
{
stack<int> stk;
height.push_back(0);
int maxArea = 0;
for(int i = 0 ; i < height.size() ; )
{
if(stk.empty() || height[i] > height[stk.top()])
{
stk.push(i);
i++;
}
else
{
int tmp = stk.top();
stk.pop();
maxArea = max(maxArea , height[tmp] * (stk.empty() ? i : (i - stk.top() - 1)));//Largest Rectangle in Histogram ???
}
}
return maxArea;
}
};