题目描述
class Solution {
public:
void Insert(int num)
{
if(more.empty())
{
more.push(num);return ;
}
if(more.size()==less.size())
{
if(num<more.top())
{
more.push(num);
}else
{
less.push(num);
}
}
else if(more.size()>less.size())
{
if(more.top()<=num)
{
less.push(num);
}else
{
less.push(more.top());
more.pop();
more.push(num);
}
}else
{
if(less.top()>num)
{
more.push(num);
}else
{
more.push(less.top());
less.pop();
less.push(num);
}
}
}
double GetMedian()
{
if(more.size() == less.size())
{
return (more.top()+less.top())/2.0;
}else if(more.size()>less.size())
{
return more.top();
}else
{
return less.top();
}
}
private:
priority_queue<int,vector<int>,less<int> > more;//最大堆
priority_queue<int,vector<int>,greater<int> > less;// 最小堆
};