

以下是Offer59题 ,学习方法和并查集一样,会用就能理解。注意脑海中建模单调队列的运行原理。
class Solution {
public:
//monotonic queue
deque dq;
queue q;
void enqueue(int ele){
while(!dq.empty() && dq.back() < ele)
dq.pop_back();
dq.push_back(ele);
q.push(ele);
}
int max_value(){
return dq.front();
}
void popque(){
int f=q.front();
q.pop();
if(f == dq.front())
dq.pop_front();
}
vector maxSlidingWindow(vector& nums, int k) {
vector ans;
for(int i = 0; i < nums.size() && i < k; ++i)
enqueue(nums[i]);
if(k>=nums.size()){
int vx=max_value();
return vector{vx};
}
ans.push_back(max_value());
int pos = k;
for(;pos