题解 | #随时找到数据流的中位数#

随时找到数据流的中位数

http://www.nowcoder.com/practice/8c5e99acb1fa4bc3a342cd321100c0cd

大/小顶堆

class MedianHolder{
private:
    priority_queue<int, vector<int>, less<int>> maxPq; //放小的一半,奇数个数时,比minPq多一个元素
    priority_queue<int, vector<int>, greater<int>> minPq; //放大的一半
public:
    void put(int val){
        if(maxPq.si***Pq.si***Pq.push(val);
            int value = minPq.top(); minPq.pop();
            maxPq.push(value);
        }else{
            maxPq.push(val);
            int value = maxPq.top(); maxPq.pop();
            minPq.push(value);
        }

    }
    double get(){
        if(maxPq.empty() && minPq.empty()) return -1;
        if(maxPq.si***Pq.size()){
            double valA = maxPq.top();
            double valB = minPq.top();
            return (valA + valB) / 2;
        }else{
            return maxPq.top();
        }
    }
};

class Solution {
public:

    /**
     * the medians
     * @param operations int整型vector<vector<>> ops
     * @return double浮点型vector
     */
    vector<double> flowmedian(vector<vector<int> >& operations) {
        // write code here
        vector<double> res;
        MedianHolder medianHolder;
        for(vector<int> op:operations){
            if(op[0] == 1){
                medianHolder.put(op[1]);
            }else{
                res.push_back(medianHolder.get());
            }
        }
        return res;
    }
};
全部评论

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务