c++
class MedianFinder {
public:
priority_queue<int> left;
priority_queue<int, vector<int>, greater<int>> right;
MedianFinder() {}
void addNum(int num) {
if (!left.size() || num <= left.top()) left.push(num);
else right.push(num);
if (right.size() > left.size()) {
left.push(right.top());
right.pop();
}
if (left.size() - right.size() >= 2) {
right.push(left.top());
left.pop();
}
return ;
}
double findMedian() {
if (left.size() - right.size()) return (double)left.top();
return ((double)left.top() + (double)right.top()) / 2;
}
};
js
var MedianFinder = function() {
this.list = [];
};
MedianFinder.prototype.addNum = function(num) {
this.list.push(num);
};
MedianFinder.prototype.findMedian = function() {
this.list.sort((a, b) => a - b);
var n = this.list.length
if (n % 2) return this.list[(this.list.length - 1) / 2];
return (this.list[this.list.length / 2 - 1] + this.list[this.list.length / 2]) / 2;
};