239. 滑动窗口最大值

 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 };

 

posted @ 2020-04-08 16:29  Jinxiaobo0509  阅读(126)  评论(0)    收藏  举报