滑动窗口的最大值

 1 class Solution {
 2 public:
 3     vector<int> maxInWindows(const vector<int>& num, unsigned int size)
 4     {
 5         vector<int> res;
 6         if(num.empty() || size<=0)
 7             return res;
 8         int i=0;
 9         for(; i<size; ++i)
10         {
11             if(index.empty())
12             {
13                 index.push_back(i);
14             }
15             else
16             {
17                 if(num[i] >= num[index.back()])
18                     index.pop_back();
19                     index.push_back(i);
20                 
21             }
22         }
23         
24         for(; i<=num.size(); ++i)
25         {
26             res.push_back(num[index.front()]);
27             while(!index.empty() && num[i]>=num[index.back()])
28                   index.pop_back();
29             index.push_back(i);
30             while(!index.empty() && index.front()<=(i-size))
31                    index.pop_front();
32             
33         }
34         return res;
35     }
36 private:
37     deque<int> index;
38 };
原文地址:https://www.cnblogs.com/daocaorenblog/p/5470814.html