• 数据流中的中位数,C++


    维护两个堆,一个大值堆一个小值堆。

    大值堆中维护已经加入的所有的元素的小的那一半

    小值堆中维护已经加入的所有的元素的大的那一半

    加入一个值,奇数次加入就先加入小值堆,再从小值堆中选一个最小值进入大值堆

    偶数次加入就先加入大值堆,再从大值堆中选一个最大值进入小值堆

     1 #include<iostream>
     2 #include<queue>
     3 using namespace std;
     4 class Solution {
     5 public:
     6     Solution()
     7     {
     8         count = 0;
     9     }
    10     void Insert(int num)
    11     {
    12         if (count % 2 ==  0)
    13         {
    14             minQue.push(num);
    15             int fromMinQueToMaxQue = minQue.top();
    16             //cout<<"fromMinQueToMaxQue: "<<fromMinQueToMaxQue<<endl; 
    17             minQue.pop();
    18             maxQue.push(fromMinQueToMaxQue);
    19         } else {
    20             maxQue.push(num);
    21             int fromMaxQueToMinQue = maxQue.top();
    22             //cout<<"fromMaxQueToMinQue: "<<fromMaxQueToMinQue<<endl; 
    23             maxQue.pop();
    24             minQue.push(fromMaxQueToMinQue);
    25         }
    26         count++;
    27     }
    28 
    29     double GetMedian()
    30     { 
    31         if (count % 2 == 1)
    32         {
    33             return (double)maxQue.top();
    34         } else {
    35             return  ((double)minQue.top() + (double)maxQue.top()) / 2;
    36         }
    37     }
    38 private:
    39     int count;
    40     priority_queue<int, vector<int>, less<int> > minQue;
    41     priority_queue<int, vector<int>, greater<int> > maxQue;
    42 };
    43 int main()
    44 {
    45     Solution s = Solution();
    46     s.Insert(5);
    47     s.Insert(2);
    48     s.Insert(3);
    49     s.Insert(4);
    50     cout<<s.GetMedian()<<endl;
    51     return 0;
    52     return 0;
    53 }
  • 相关阅读:
    DDT驱动selenium自动化测试
    python 对Excel表格的读取
    python 对Excel表格的写入
    selenium对百度进行登录注销
    selenium的八大定位元素的方式
    selenium打开Chrome浏览器并最大化
    行列式计算的归纳
    C标准库函数getchar()
    测试必备-抓包工具的使用
    uiautomator2使用教程
  • 原文地址:https://www.cnblogs.com/adamhome/p/8119333.html
Copyright © 2020-2023  润新知