class Solution { public: int largestRectangleArea(vector<int>& h) { stack<int> s; int res = 0; h.push_back(0); for (int i = 0; i < h.size(); i++) { while (!s.empty() && h[i] < h[s.top()]) { int cur = s.top(); s.pop(); int left = s.empty() ? -1 : s.top(); res = max(res, (i - left - 1) * h[cur]); } s.push(i); } return res; } };