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 max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int largestRectangleArea(vector<int>& height) {
height.push_back(0);
stack<int> s;
int result=0;
int temp;
for(int i=0;i<height.size();)
{
if(s.empty()||height[i]>height[s.top()])
{
s.push(i);
i++;
}
else{
temp=s.top();
s.pop();
result=max(result,height[temp]*(s.empty()?i:i-s.top()-1));
}
}
return result;
}
};