美文网首页
剑指offer-数据流中的中位数(大顶堆和小顶堆)

剑指offer-数据流中的中位数(大顶堆和小顶堆)

作者: 棉花糖7 | 来源:发表于2020-04-17 15:41 被阅读0次

这道题官方题解两种方法

1.利用库函数,二分法进行查找lower_bound

2.利用有限队列,维护两个堆,大顶堆和小顶堆

题目 code

核心要点:设置两个优先队列,分别存数据流前半部分和后半部分,前半部分用大顶堆存,后半部分用小顶堆存。

添加num:先添加到大顶堆(前半部分),再把大顶堆首移入小顶堆,判断一下前半部分是否长于后半部分,如是则把小顶堆首移入大顶堆。

找中位数:若前半部分长于后半部分(共有奇数个num),返回大顶堆首;否则返回大小顶堆首的平均值。

题解

相关文章

  • 剑指offer-数据流中的中位数(大顶堆和小顶堆)

    这道题官方题解两种方法 1.利用库函数,二分法进行查找lower_bound 2.利用有限队列,维护两个堆,大顶堆...

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

    建立大顶堆和小顶堆

  • 堆--求中位数

    针对动态数据,求排序后处于中间的数据思路:维护两个堆,一个大顶堆,一个小顶堆。大顶堆中存储前半部分数据,小顶堆中存...

  • 堆在java中的应用--PriorityQueue

    堆的特点 堆是一种完全二叉树的模拟,堆一般是基于数组的实现,堆分大顶堆和小顶堆,大顶堆就是堆顶是最大的数据,然后子...

  • 大顶堆生成、新增、删除、排序javascript实现

    大顶堆小顶堆的概念和使用本文不赘述,使用js实现一个大顶堆的创建,新增,删除以及利用大顶堆排序

  • 大顶堆:堆中每个节点的值都大于等于其子节点中每个节点的值。本文内容以大顶堆为前提。 小顶堆:堆中每个节点的值都小于...

  • 数据流的中位数

    使用双pq,一个大顶堆装小于middle的数,一个小顶堆装大于middle的数。大顶堆与小顶堆之间元素个数差不能大...

  • 详解堆排序算法

    什么是堆 堆首先是一个完全二叉树,堆分为大顶堆和小顶堆;大顶堆 :每个节点的值大于或等于其左右孩子节点的值,称为大...

  • 堆排序

    堆的定义 堆可以理解为一棵完全二叉树,它可以分为大顶堆和小顶堆。 大顶堆:每个节点的值都大于或等于其左右孩子节点的...

  • 堆的应用

    堆的应用一:优先级队列 将优先级的之分的数据存入堆中(小顶堆或者大顶堆),堆顶即优先级最搞的数据,当需要的时候直接...

网友评论

      本文标题:剑指offer-数据流中的中位数(大顶堆和小顶堆)

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