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; } };