用两个堆来实现,堆中元素个数相差<=1,

class Solution {
    priority_queue<int, vector<int>, less<int> > p;                          //大顶堆(存的是一堆小元素)
    priority_queue<int, vector<int>, greater<int> > q;                     //小顶堆(存的是一堆大元素)
     
public:
    void Insert(int num){
        if(p.empty() || num <= p.top()) p.push(num);
        else q.push(num);
        if(p.size() == q.size() + 2) q.push(p.top()), p.pop();
        if(p.size() + 1 == q.size()) p.push(q.top()), q.pop();
    }
    double GetMedian(){ 
      return p.size() == q.size() ? (p.top() + q.top()) / 2.0 : p.top();
    }
};

从一个数据流中取出中位数相关推荐

  1. [剑指Offer] 数据流中的中位数

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

  2. 剑指offer——数据流中的中位数

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

  3. 剑指offer:面试题41. 数据流中的中位数

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

  4. 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值

    一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...

  5. 《剑指offer》数据流中的中位数

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

  6. 牛客网 在线编程 数据流中的中位数

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

  7. Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数

    堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...

  8. 【剑指offer】_18 数据流中的中位数

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

  9. 数据流中的中位数java_数据流中的中位数

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

最新文章

  1. 学java为什么要报java培训班?
  2. Latex中的列表环境[一]
  3. [C#基础知识系列]专题十七:深入理解动态类型
  4. 房地产企业大量海外融资,或将来资不抵债,被收购
  5. 如何快速安全的插入千万条数据?
  6. 学习笔记(47):Python实战编程-pack布局
  7. Oracle中关于计算时间差的例子:
  8. 在开发环境中,自己搭建一个ssl环境(小例子)
  9. 如果一个国家是一种颜色,中国的颜色美哭了!
  10. mysql报错1200_关于MYSQL配置replicate出现1200错误_MySQL
  11. python狗屁不通文章生成器_狗屁不通文章生成器,哈哈哈
  12. JSP基础教程-初时index首页
  13. 模拟CMOS集成电路设计基础 第一章 第二章开头
  14. 【实习之T100开发】T100 单档程序开发,java工程师面试突击中华石杉
  15. 如何在vue项目中增加网页logo
  16. 10个物联网应用的案例
  17. 最GIS应用案例——告诉你什么是GIS!
  18. php百度优化,百度技术沙龙第 24 期 PHP 性能优化实践
  19. Ubuntu下键盘输入错乱问题,输入自动变为希腊字母和符号
  20. scp传文件指定端口、传输目录

热门文章

  1. 在python中字典和集合都是用一对什么作为界定符_Python习题(一)
  2. RocketMQ基础概念剖析源码解析
  3. 微盟耗时 145 个小时弥补删库,血亏 1.5 亿元!
  4. 手把手带你手写SpringMVC,剑指优秀开源框架灵魂
  5. 漫画:当程序员有了下一代.....
  6. 漫画:云市场下,运营商甲方爸爸也出来抢乙方生意了?
  7. JimuReport积木报表——分组报表怎么做
  8. MiniDao_1.6-SNAPSHOT 版本发布,轻量级Java持久化框架
  9. JEECG - 基于代码生成器的J2EE智能开发框架 续二: 代码生成器使用规则
  10. leetcode75