LC 84.柱状图中最大的矩形
题目链接:LC 84.柱状图中最大的矩形
思路:思路和接雨水一样,但是要找到每个柱子左右两边比它矮的柱子。然后以该柱子的高度为基准统计最大矩形。
注意:要在数组的首尾加上0元素,防止一直在循环中没有结果。
代码:
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
if(heights.size()==1)return heights[0];
stack<int> st;
int result = 0;
heights.insert(heights.begin(), 0);//首部加0
heights.push_back(0);//尾部加0
st.push(0);
for(int i=1; i<heights.size(); i++){
while(heights[i]<heights[st.top()]){
int cur = st.top();
st.pop();
result = max(result, heights[cur]*(i-st.top()-1));
}
st.push(i);
}
return result;
}
};