标签:empty 个数 back 结果 nbsp 一个 subject ott win
考虑用一个双向队列来记录当前滑动窗口,保持队首为最大值的下标。首先把第一个滑动窗口中最大值的下标放入队列,然后从第二个窗口开始遍历数组:
1 class Solution { 2 public: 3 vector<int> maxInWindows(const vector<int>& num, unsigned int size) 4 { 5 vector<int> v; 6 if(num.size()>=size&&size>=1){ 7 deque<int> index; 8 //队列中保留第一个窗口的最大值下标 9 for(int i=0;i<size;i++){ 10 while(!index.empty()&&num[i]>=num[index.back()]) 11 index.pop_back(); 12 index.push_back(i); 13 } 14 for(int i=size;i<num.size();i++){ 15 v.push_back(num[index.front()]); 16 while(!index.empty()&&num[i]>=num[index.back()]) 17 index.pop_back(); 18 if(!index.empty()&&index.front()<=i-size) 19 index.pop_front(); 20 index.push_back(i); 21 } 22 v.push_back(num[index.front()]); 23 } 24 return v; 25 } 26 };
标签:empty 个数 back 结果 nbsp 一个 subject ott win
原文地址:https://www.cnblogs.com/wmx24/p/8971748.html