leetcode 295. 数据流的中位数

110 阅读1分钟

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;
};