1 class Solution 2 { 3 public: 4 vector<int> maxSlidingWindow(vector<int>& nums, int k) 5 { 6 vector<int> res; 7 deque<int> q; 8 for(int i = 0;i < nums.size();i ++) 9 { 10 //看滑动窗口是否大于k 11 if(q.size() && i - k + 1 > q.front()) q.pop_front(); 12 //维持一个严格单调下降的双端队列 13 while(q.size() && nums[q.back()] <= nums[i]) q.pop_back(); 14 q.push_back(i);//把当前下标放入双端队列中 15 //滑动窗口大小满足k 16 if(i >= k - 1) res.push_back(nums[q.front()]); 17 } 18 return res; 19 } 20 };
原文:https://www.cnblogs.com/yuhong1103/p/12770666.html