# 力扣第50天— 第84题
文章目录
一、第84题–柱状图中最大的矩形
跟上一题有些类似,差不多的思路,调试一下,就通过了。这个是递减的,找两侧小于当前的值。三个判断条件也注意下----因为是递减的,>情况要入栈,<情况才计算面积。
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
stack<int> st;
int result = 0;
heights.push_back(0);
heights.insert(heights.begin(), 0);
st.push(0);
for(int i =1; i<heights.size(); i++){
if(heights[i] > heights[st.top()]) st.push(i);
else if(heights[i] == heights[st.top()]) {
st.pop();
st.push(i);
}
else{
while(!st.empty() && heights[i] < heights[st.top()]){
int mid = st.top();
st.pop();
if(!st.empty()){
int h = heights[mid];
int w = i - st.top() -1;
result = max(result, h*w);
// cout << i << ' ' << result << endl;
}
}
st.push(i);
}
}
return result;
}
};