本地
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> heights={2,1,5,6,2,3};
int ans=0;
deque<int> q;
heights.insert(heights.begin(),0);
heights.push_back(0);
for(int i=0;i<heights.size();i++){
while(!q.empty()&&heights[q.back()]>heights[i]){
int curnum=q.back();
q.pop_back();
int nowans=heights[curnum]*(i-q.back()-1);
ans=max(ans,nowans);
}
q.push_back(i);
}
cout<<ans;
}
在线
class Solution {
public:
int largestRectangleArea(vector<int>& heights) {
int ans=0;
deque<int> q;
heights.insert(heights.begin(),0);
heights.push_back(0);
for(int i=0;i<heights.size();i++){
while(!q.empty()&&heights[q.back()]>heights[i]){
int curnum=q.back();
q.pop_back();
int nowans=heights[curnum]*(i-q.back()-1);
ans=max(ans,nowans);
}
q.push_back(i);
}
return ans;
}
};