解题思路:首先是用暴力循环来解,其次便是用队列来模拟这个滑动窗口,同时要自定义三个函数,一个pop用来弹出来保证滑动窗口的移动,同时我们把最大的放在队列口那里,当每次有更大的就把原来的挤出栈外,一个push用来把前面不够大的元素排挤出队列并且把最大的那个数压入队列,还有一个find来找到最大的元素
代码实现如下:
class Solution {
private:
class MyQueue{
public:
deque
void pop(int val){
if(!a.empty()&&val==a.front()){
a.pop_front();
}
}
void push(int val){
while(!a.empty()&&a.back()
a.pop_back();
}a.push_back(val);
}
int findBest(){
return a.front();
}
};
public:
vector
MyQueue b;vector
for(int i=0;i
b.push(nums[i]);
}
result.push_back(b.findBest());
for(int i=k;i
b.pop(nums[i-k]);
b.push(nums[i]);
result.push_back(b.findBest());
}return result;
}
};