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 =
return
Given height =
[2,1,5,6,2,3],return
10.
class Solution
{
public:
int largestRectangleArea(vector<int> &height)
{
height.push_back(0);
int len = height.size();
stack<int> s;
s.push(-1);
int maxArea = 0;
int i = 0;
while(i < len)
{
if(height[i]>= height[s.top()]){
s.push(i);
i++;
}
else
{
int tp = s.top();
s.pop();
maxArea = max(maxArea, height[tp]*(i-1-s.top()));
}
}
return maxArea;
}
};