算一个数组里面k个元素的滑动窗口的最值
单调队列 不同于单调栈
单调队列模板题
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& a, int k) {
vector<int> ans;
int n=a.size(), i;
deque<pair<int, int>> q;
if(!k) return ans;
for(i=0;i<k;i++){
while(!q.empty() && q.back().first<a[i]){
q.pop_back();
}
q.push_back({a[i], i});
}
ans.push_back(q.front().first);
while(i<n){
while(!q.empty() && q.back().first<a[i]){
q.pop_back();
}
q.push_back({a[i], i});
while(!q.empty() && q.front().second<i-(k-1)){
q.pop_front();
}
ans.push_back(q.front().first);
i++;
}
return ans;
}
};