博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer] 41. 数据流中的中位数 (大小堆,优先队列)
阅读量:5334 次
发布时间:2019-06-15

本文共 624 字,大约阅读时间需要 2 分钟。

对于海量数据与数据流,用最大堆,最小堆来管理。

class Solution {public:    /*    * 1.定义一个规则:保证左边(大顶堆)和右边(小顶堆)个数相差不大于1,且大顶堆的数值都小于等于小顶堆的数 *       2.大小堆顶可以用优先序列实现        插入规则:        当插入数值小于左边的堆顶时候,就插入左边,否则插入右边堆。(注意初始为空时,插入不能比较)        调整使得满足个数差<=1:        正常时是只有两种情况:p=q或者p=q+1,由于每插一个值就会考虑调整,那么边界情况就是p=q+2或者p+1=q           p=q+2时,弹出左边大顶堆p的堆顶,并将其插入到q          p+1=q时,弹出右边小顶堆q的堆顶,并将其插入到p    * 3. 如果是奇数:中位数mid=左边的堆顶,因为先插入到左边,再插入到右边;为奇数时,中位数就是两个堆顶的平均值.     */    priority_queue 
,less
> p; //大顶堆p,注意最后两个>>不能连写,否则是右移运算 priority_queue
,greater
> q;//小顶堆q void Insert(int num) { if(p.empty()||num

 

转载于:https://www.cnblogs.com/nicetoseeyou/p/10669714.html

你可能感兴趣的文章
mysql desc esc 基本命令总结
查看>>
matlab命令文档【全】
查看>>
扎瓦男孩决定编写一个酒店管理系统
查看>>
poj2138 Travel Games
查看>>
Spark概述
查看>>
iray摘抄
查看>>
蒲公英v5p%n搭建局域网后用nginx做代理的配置
查看>>
函数式编程
查看>>
JavaScript中的BOM和DOM
查看>>
bzoj 1606: [Usaco2008 Dec]Hay For Sale 购买干草
查看>>
[转]AngularJS:何时应该使用Directive、Controller、Service?
查看>>
注册表操作
查看>>
360浏览器兼容模式 不能$.post (不是a 连接 onclick的问题!!)
查看>>
Yii安装使用教程(转)
查看>>
读取省市区
查看>>
控制器View的生命周期及相关函数是什么?你在开发中是如何用的?
查看>>
Java四种引用包括强引用,软引用,弱引用,虚引用。
查看>>
spring注入Properties
查看>>
讲解HTML服务器推送相关技术知识(转)
查看>>
js实现键盘按键检测
查看>>