zoukankan      html  css  js  c++  java
  • 乱序中的中位数

    维护一个最大堆和一个最小堆,最大堆中的堆顶小于最小堆中的堆顶,并且两个堆的数据数目相差最大为1。

    #include <iostream>
    #include <vector>
    #include <queue>
    using namespace std;
    
    void addNums(int num)
    {
        priority_queue<int, vector<int>, greater<int> >big_queue;
        priority_queue<int, vector<int>, less<int> >small_queue;
    
        if(big_queue.size() == small_queue.size()) {
            if(num < big_queue.top())
                big_queue.push(num);
            else
                small_queue.push(num);          
        }
        else if(big_queue.size() > small_queue.size()) {
            if(num > big_queue.top())
                small_queue.push(num);
            else{
                small_queue.push(big_queue.top());
                big_queue.pop();
                big_queue.push(num);
            }
        }
        else if(big_queue.size() < small_queue.size()) {
            if(num < small_queue.top())
                big_queue.push(num);
            else{
                big_queue.push(small_queue.top());
                small_queue.pop();
                small_queue.push(); 
            }
        }
        
    }    
  • 相关阅读:
    对拍
    311随笔
    精彩才刚刚开始
    做不下去了,就开心一下吧。
    情书
    论Sue这个人呐(=@__@=)
    P1113 杂务
    P1546 最短网络 Agri-Net
    P2009 跑步
    P2814 家谱
  • 原文地址:https://www.cnblogs.com/11ys/p/14267278.html
Copyright © 2011-2022 走看看