说是最后一天 其实后面还有图论和等等什么的 不过算是代码训练营的最后一天吧 还是历经整整3个月终于刷完了 主要因为是转行 其中很多算法根本没接触过 耗费了比较多的时间 不过嵌入式对算法的话要求也没那么高 后面就是hot100 和剑指offer之类的 就差不多了
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
vector<int> leftindex(heights.size());
vector<int> rightindex(heights.size());
leftindex[0]=-1;
for(int i=1;i<heights.size();i++){
int t=i-1;
while(t>=0&&heights[t]>=heights[i])
t=leftindex[t];
leftindex[i]=t;
}
rightindex[heights.size()-1]=heights.size();
for(int i=heights.size()-2;i>=0;i--){
int t=i+1;
while(t<heights.size()&& heights[t]>=heights[i])
t=rightindex[t];
rightindex[i]=t;
}
int result=0;
for(int i=0;i<heights.size();i++){
int sum=heights[i]*(rightindex[i]-leftindex[i]-1);
result=max(sum,result);
}
return result;
}
};
双指针 还是有些难度的