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

随时找到数据流的中位数

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;
    }
};
全部评论

相关推荐

投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务