数组中出现次数超过一半的数字 最小的k个数 数据流中位数c++

在这里插入图片描述
遍历numbers,取出首个不同值,查找numbers中等于该值的个数cnt,把2cnt与number.size比较即可在这里插入图片描述
在这里插入图片描述
input排序,前k个弹出,放在结果末尾O(n)在这里插入图片描述大根堆
创建一个大小为k的数据容器来存储最小的k个数字
从输入的n个整数中读入一个数a
容器中已有的数字少于k个,则直接把a放入容器
容器中已有k个数字满了,找出容器中k个数的最大值m,与a比较
m<a替换m=a
m>a抛弃a
由于heap已排列好,只需弹除第k+1个元素如25,26行所示
heap值从大到小加入结果,反转即可
O(nlogn)
在这里插入图片描述

在这里插入图片描述
前n个小数是大根堆 后n个或n-1个大数是小根堆
总数2n偶取大小堆头结点平均或2n-1奇取大堆头节点在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值