int Solution::largestRectangleArea(vector &height) { int n=height.size(); stacks; int value=0; s.push(0); for(int i=1; i=height[s.top()]){ s.push(i); } else { while(!s.empty() and height[s.top()]>height[i]){ int val=height[s.top()]; s.pop(); int area; if(s.empty()){ area=val*i; value=max(value,area); } else{ area=val*(i-s.top()-1); value=max(value,area); } } s.push(i); } } while(!s.empty()){ int val=height[s.top()]; s.pop(); int area; if(s.empty()){ area=val*n; value=max(value,area); } else{ area=val*(n-s.top()-1); value=max(value,area); } } return value; }