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

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

  假设现在有数组a[n],和滑动的窗口长度为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[i - k]);        q1.push(a[i - k]);        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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表