数据流的中位数

来源:互联网 发布:免费网页制作软件 编辑:程序博客网 时间:2024/06/05 16:57

解题思路:

1.用了STL中的priority_queue来保存数,max中的数从大到小,min中的数从小到大。

2.要保证max-min中数差不能超过2,min-max中数差不能超过1。

class Solution {    priority_queue< int,vector<int>,less<int> > max;    priority_queue< int,vector<int>,greater<int> > min;public:    void Insert(int num)    {        if(max.empty()||num<=max.top())            max.push(num);        else            min.push(num);        if(max.size()==min.size()+2) //max多--->两个一样多        {            min.push(max.top());            max.pop();        }        if(max.size()+1==min.size())  //min多--->max比min多一个        {    max.push(min.top());            min.pop();        }    }    double GetMedian()    {     return ( min.size()==max.size()?( (min.top()+max.top())/2.0 ):max.top() );    }};


原创粉丝点击