zoukankan      html  css  js  c++  java
  • 数据流中的中位数,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 }
  • 相关阅读:
    vue获取下拉框值
    vue子父组件通信
    内存堆栈问题
    Object.defineProperty()--数据劫持原理
    call和apply和bind的区别
    Object.create()和new object()和{}的区别
    Object.keys()/Object.values()的简单理解
    object.assign
    泛型的定义、使用
    ts 泛型
  • 原文地址:https://www.cnblogs.com/adamhome/p/8119333.html
Copyright © 2011-2022 走看看