滑动窗口经典题目,这里使用deque,双端队列中保存的是下标,保存值和下标均可以,依赖个人习惯。

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        deque<int> dq;
        vector<int> ans;
        for(int i = 0;i < nums.size();i++)
        {
            if(!dq.empty() && dq.front() == i - k)
                dq.pop_front();
            while(!dq.empty() && nums[dq.back()] < nums[i])
                dq.pop_back();
            
            dq.push_back(i);
            if(i >= k -1)
                ans.push_back(nums[dq.front()]);
        }
        
        return ans;
    }
};