【滑动窗口最值】滑动窗口的最值的一种方案
假设现在有数组a,和滑动的窗口长度为k >n>>k; vector mn; vector mx,a(n); priority_queue p,q; priority_queue p1,q1; for(int i = 0; i < n; i++){ cin>>a; } for(int i = 0; i < k; i++){ p.push(a); p1.push(a); } mx.push_back(p.top()); mn.push_back(p1.top()); for(int i = k; i < n; i++){ q.push(a); q1.push(a); if(p.size() && q.size()){ while(p.top() == q.top()){ p.pop(); q.pop(); if(p.empty() || q.empty()) break; } } if(p1.size() && q1.size()){ while(p1.top() == q1.top()){ p1.pop(); q1.pop(); if(p1.empty() || q1.empty()) break; } } p.push(a); p1.push(a); mx.push_back(p.top()); mn.push_back(p1.top()); } int len = mx.size(); for(int i = 0; i < len; i++){ cout
页:
[1]