网易首页 > 网易号 > 正文 申请入驻

每天一道剑指offer-数据流的中位数

0
分享至

出自:http://www.zhenganwen.top

已获授权

数据流的中位数 题目描述

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

  1. public void Insert(Integer num) {

  2. }

  3. public Double GetMedian() {

  4. }

解析

由于中位数只与排序后位于数组中间的一个数或两个数相关,而与数组两边的其它数无关,因此我们可以用一个大根堆保存数组左半边的数的最大值,用一个小根堆保存数组右半边的最小值,插入元素 O(logn),取中位数 O(1)

  1. public class Solution {

  2. //小根堆、大根堆

  3. PriorityQueue<Integer> minHeap = new PriorityQueue(new MinRootHeadComparator());

  4. PriorityQueue<Integer> maxHeap = new PriorityQueue(new MaxRootHeadComparator());

  5. int count = 0;

  6. class MaxRootHeadComparator implements Comparator<Integer>{

  7. //返回值大于0则认为逻辑上i2大于i1(无关对象包装的数值)

  8. public int compare(Integer i1, Integer i2){

  9. return i2.intValue() - i1.intValue();

  10. }

  11. }

  12. class MinRootHeadComparator implements Comparator<Integer>{

  13. return i1.intValue() - i2.intValue();

  14. }

  15. }

  16. count++;//当前这个数是第几个进来的

  17. //编号是奇数就放入小根堆(右半边),否则放入大根堆

  18. if(count % 2 != 0){

  19. //如果要放入右半边的数比左半边的最大值要小则需调整左半边的最大值放入右半边并将当前这个数放入左半边,这样才能保证右半边的数都比左半边的大

  20. if(maxHeap.size() > 0 && num < maxHeap.peek()){

  21. maxHeap.add(num);

  22. num = maxHeap.poll();

  23. }

  24. minHeap.add(num);

  25. }else{

  26. if(minHeap.size() > 0 && num > minHeap.peek()){

  27. num = minHeap.poll();

  28. }

  29. }

  30. }

  31. if(count == 0){

  32. return 0.0;

  33. }

  34. if(count % 2 != 0){

  35. return minHeap.peek().doubleValue();

  36. }else{

  37. return (minHeap.peek().doubleValue() + maxHeap.peek().doubleValue()) / 2;

  38. }

  39. }

  40. }

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
比京沪冲突更恶劣!黄荣奇禁赛三场,广州将3-2逆袭新疆进半决赛

比京沪冲突更恶劣!黄荣奇禁赛三场,广州将3-2逆袭新疆进半决赛

绯雨儿
2024-04-23 14:16:36
广厦逆转,广东输球,周琦肘击被罚下,胡明轩爆发,低迷之人被批

广厦逆转,广东输球,周琦肘击被罚下,胡明轩爆发,低迷之人被批

东球弟
2024-04-23 21:41:27
五年前购入的俄制防空系统,土耳其恐将部署到伊拉克边境 专家:或与伊朗有关

五年前购入的俄制防空系统,土耳其恐将部署到伊拉克边境 专家:或与伊朗有关

红星新闻
2024-04-23 19:19:55
领导干部任前公示

领导干部任前公示

锡望
2024-04-23 21:52:30
白百何穿时尚装出席活动,下身勒出三角区,一旁的井柏然太尴尬!

白百何穿时尚装出席活动,下身勒出三角区,一旁的井柏然太尴尬!

白宸侃片
2024-04-23 11:30:17
彻底不装了?美国三大芯片巨头集体官宣,人民日报:放弃幻想

彻底不装了?美国三大芯片巨头集体官宣,人民日报:放弃幻想

疯狂小菠萝
2024-04-23 21:49:54
虽然越南人口数量突破1亿,但是河内的繁华程度跟昆明旗鼓相当

虽然越南人口数量突破1亿,但是河内的繁华程度跟昆明旗鼓相当

辽宁打工者谈城市发展
2024-04-22 21:42:13
​今起生效!北京楼市限购政策继续松绑

​今起生效!北京楼市限购政策继续松绑

中国城市报
2024-04-23 20:20:59
不再叫陈梦姐姐,合影时,张本美和挤不上领奖台,谁注意陈梦举动

不再叫陈梦姐姐,合影时,张本美和挤不上领奖台,谁注意陈梦举动

东球弟
2024-04-23 11:25:19
离谱!外卖小哥送餐时,女子一丝不挂站门口让其进屋,评论区炸锅

离谱!外卖小哥送餐时,女子一丝不挂站门口让其进屋,评论区炸锅

看晓天下事
2024-04-22 19:02:45
湘潭大学遇害学生:4月7号住院,13号离世,10号嫌疑人从宿舍搬走

湘潭大学遇害学生:4月7号住院,13号离世,10号嫌疑人从宿舍搬走

汉史趣闻
2024-04-22 16:31:36
德国逮捕三名“涉嫌为中国情报机构从事间谍行为”德国公民,中方驳斥

德国逮捕三名“涉嫌为中国情报机构从事间谍行为”德国公民,中方驳斥

环球网资讯
2024-04-23 15:47:12
黄金大跌创近两年最大跌幅

黄金大跌创近两年最大跌幅

法制社会报
2024-04-23 12:29:22
问界M7周销量逐渐下滑,一代网红车就这样要没落了吗?

问界M7周销量逐渐下滑,一代网红车就这样要没落了吗?

玩车专家1
2024-04-23 17:23:57
李嘉诚:内地经济不景气,房价远未见底,刚需和投资,不适应出手

李嘉诚:内地经济不景气,房价远未见底,刚需和投资,不适应出手

楼市味道
2024-04-21 23:35:01
外交部:加快打造中马命运共同体 造福两国人民

外交部:加快打造中马命运共同体 造福两国人民

财联社
2024-04-22 15:50:10
宝马X3车主:看了两年新能源汽车,理想、蔚来、小鹏都在内!为啥最后选了Model 3

宝马X3车主:看了两年新能源汽车,理想、蔚来、小鹏都在内!为啥最后选了Model 3

和讯网
2024-04-23 12:01:50
江苏一官员主动投案

江苏一官员主动投案

鲁中晨报
2024-04-23 19:33:09
默里压哨绝杀湖人,掘金的防守策略太完美了!

默里压哨绝杀湖人,掘金的防守策略太完美了!

体育大集
2024-04-24 00:08:19
744分高考状元:母亲瘫痪、父亲疯了,被清华录取6年后,他怎样了

744分高考状元:母亲瘫痪、父亲疯了,被清华录取6年后,他怎样了

小凄历史
2024-04-23 16:12:20
2024-04-24 00:36:49
程序员乔戈里
程序员乔戈里
本人百度java工程师
1633文章数 8903关注度
往期回顾 全部

头条要闻

西部战区上将司令员发声:要紧盯新兴领域安全威胁

头条要闻

西部战区上将司令员发声:要紧盯新兴领域安全威胁

体育要闻

老球痞们给年轻人上了课

娱乐要闻

赵丽颖晒照似初恋,拍照疑与儿子分享

财经要闻

央行:买卖国债与QE操作截然不同

科技要闻

快手挥泪“斩”辛巴?

汽车要闻

广汽丰田2024赛那SIENNA正式上市

态度原创

教育
健康
本地
旅游
公开课

教育要闻

留学生中的浓人vs淡人!

这2种水果可降低高血压死亡风险

本地新闻

我和我的家乡|潍坊人真是什么都敢往天上放啊

旅游要闻

重庆荣获2023年全国游客满意度十佳城市

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版