没腿的鸟 发表于 2024-2-20 12:04:33

【滑动窗口最值】滑动窗口的最值的一种方案

  假设现在有数组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]
查看完整版本: 【滑动窗口最值】滑动窗口的最值的一种方案