思路;其实就是对于一个单调队列的运用
首先就是对于单调队列有个了解,这里写的单调队列是一维的,前面做的那个“子矩阵”那个题是对二维问题进行解决的,这里成一维的了,所以直接写出来单调队列就行:
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
vector<int>res;
vector<int>q(100010,0);
int n=nums.size();
int front=0;
int rear=-1;
for(int i=0;i<n;i++){
if(front<=rear&&q[front]+k<=i)front++;
while(front<=rear&&nums[q[rear]]<=nums[i])rear--;
q[++rear]=i;
if(i>=k-1)
res.push_back(nums[q[front]]);
}
return res;
}
};