利用单调队列实现
1. 判断当前元素是否还在滑动窗口中,如果不在,弹出
2. 当队尾元素小于等于当前元素时,队尾元素出队
3. 当前元素下标入队
4. 把每次的最大值加入到结果中
class Solution {
public:
vector<int> maxInWindows(vector<int>& nums, int k) {
deque<int> de;
vector<int> res;
for(int i = 0; i < nums.size(); i++)
{
if(!de.empty() && i - k + 1 > de.front()) de.pop_front();
while(!de.empty() && nums[i] >= nums[de.back()]) de.pop_back();
de.push_back(i);
if(i >= k - 1) res.push_back(nums[de.front()]);
}
return res;
}
};
原文:https://www.cnblogs.com/Trevo/p/12601918.html