https://leetcode.com/problems/sliding-window-maximum/description/
这其实是一个单调队列。队列的队首维护当前最大值,而且保证队列里面是降序的。弹出数据从队列尾部弹出。
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
deque<int>q;
vector<int> ret;
for (int i = 0; i < nums.size(); i++) {
if (!q.empty() && q.front() == i - k) q.pop_front();
while (!q.empty() && nums[q.back()] <= nums[i]) q.pop_back();
q.push_back(i);
if (i >= k-1)
ret.push_back( nums[q.front()] );
}
return ret;
}
};