84. Largest Rectangle in Histogram
Monotonic Stack
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
heights.push_back(0);
int n = heights.size();
stack<int> stk;
int maxArea = 0;
for (int i = 0; i < n; i++) {
while (!stk.empty() && heights[stk.top()] > heights[i]) {
int h = heights[stk.top()]; stk.pop();
int w = stk.empty() ? i : i - stk.top() - 1;
maxArea = max(maxArea, h * w);
}
stk.push(i);
}
return maxArea;
}
};
- T:
- S: