本篇涉及知识点:双端队列 deque 单调栈 stack
滑动窗口的最大值
由于需要直到某个区间的最大值,在区间向右滑动的时候,可以拆解为R向右一位,L也向右一位。
由于我们只需要最大值,所以deque里的内容单调递减的,开头的最大,记录的是arr的【下标】
复习一下双端队列的方法
deq.front(); //返回队列首
deq.back();//返回队列尾
deq.pop_back(); //删除最后一位
deq.push_back(); //队尾加入一个
deq.empty(); //判空
deque–Code
最大值
双端队列中 由大到小
返回每个长度为size的区间内最大值
vector<int> getMaxarr(vector<int>& arr , int size){
vector<int> res; //存所有长度为size的答案
deque<int> deq;
for(int i=0;i<arr.size();i++){
//R右移
while(!deq.empty() && arr[deq.back()] < arr[i])
deq.pop_back()<