剑指 Offer 41. 数据流中的中位数
class MedianFinder {
public:
priority_queue<int, vector<int>, greater<int>> rightHeap;
priority_queue<int, vector<int>, less<int>> leftHeap;
MedianFinder() {
}
void addNum(int num) {
if(rightHeap.size() == leftHeap.size()){
leftHeap.push(num);
int top = leftHeap.top();
leftHeap.pop();
rightHeap.push(top);
}else{
rightHeap.push(num);
int top = rightHeap.top();
rightHeap.pop();
leftHeap.push(top);
}
}
double findMedian() {
if(rightHeap.size() != leftHeap.size()){
return rightHeap.top() * 1.0;
}else{
return (leftHeap.top() + rightHeap.top()) * 1.0 / 2;
}
}
};