美文网首页一起来刷算法题
数据流中的中位数

数据流中的中位数

作者: cherryleechen | 来源:发表于2019-05-07 13:21 被阅读0次

时间限制:1秒 空间限制:32768K

题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

我的代码

class Solution {
    priority_queue<int,vector<int>,greater<int>> minHeap;
    priority_queue<int,vector<int>,less<int>> maxHeap;
public:
    void Insert(int num)
    {
        if(maxHeap.empty() || num<maxHeap.top())
            maxHeap.push(num);
        else
            minHeap.push(num);
        if(maxHeap.size()==minHeap.size()+2){
            minHeap.push(maxHeap.top());
            maxHeap.pop();
        }
        if(maxHeap.size()+1==minHeap.size()){
            maxHeap.push(minHeap.top());
            minHeap.pop();
        }
    }

    double GetMedian()
    { 
        if(maxHeap.size()==minHeap.size()+1)
            return maxHeap.top();
        else
            return (maxHeap.top()+minHeap.top())/2.0;
    }
};

运行时间:3ms
占用内存:476k

相关文章

  • [牛客]数据流中的中位数

    [牛客]数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有...

  • JZ-063-数据流中的中位数

    数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序...

  • LeetCode 每日一题 [61] 数据流中的中位数

    LeetCode 数据流中的中位数 [困难] 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位...

  • 【流式数据】求数据流中的中位数

    源自《剑指offer》第63题 问题描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就...

  • 面试题41(剑指offer)--数据流中的中位数

    题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。...

  • 剑指offer 42- 数据流中的中位数

    如何得到一个数据流中的中位数? 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。 如果...

  • 【剑指 offer】数据流中的中位数

    1、题目描述 如何得到一个数据流中的中位数? 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间...

  • Python实现数据流中的中位数【堆】

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值...

  • 数据流中的中位数

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数...

  • 数据流中的中位数

    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数...

网友评论

    本文标题:数据流中的中位数

    本文链接:https://www.haomeiwen.com/subject/vvwkoqtx.html