非常简单,注意别越界
class MedianFinder {
public:
priority_queue<int, vector<int>, less<int> >down;
priority_queue<int, vector<int>, greater<int> >up;
/** initialize your data structure here. */
MedianFinder(void) {
}
void addNum(int num) {
if(!up.empty() && up.top()<=num)
up.push(num);
else
down.push(num);
if(up.size() > down.size())
{
down.push(up.top());
up.pop();
}
else if(down.size()-up.size()>=2)
{
up.push(down.top());
down.pop();
}
return;
}
double findMedian() {
if(up.size()!=down.size())
return down.top();
else if(0==up.size())
return 0.0;
else
return ((double)up.top()+(double)down.top())/2.0;
}
};