class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
int result = 0;
stack<int> s;
heights.push_back(0);
for (int i = 0; i < heights.size(); ++i) {
while (!s.empty() && heights[s.top()] > heights[i]) {
int last = s.top();
s.pop();
if (s.empty()) {
result = max(result, heights[last]*i);
}
else {
result = max(result, heights[last]*(i-1-s.top()));
}
}
s.push(i);
}
return result;
}
};
- AC
- 26ms
beat 22.04%
1.在原数据的vector中添加0作为结尾,是一个比较好的trick
2.贪心法