题目描述

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

解题思路

肯定不能用排序,那样肯定会超时。更为稳妥的办法是使用std::multiset结构,插入数据复杂度是log⁡2N\log_2{N}log2​N,同时支持前后迭代。注意迭代器没有it = it + 1这种操作…

AC代码

class Solution {public:void Insert(int num){numbers.insert(num);int len = numbers.size();if (len == 1) {x = y = numbers.begin();} else if (len % 2 ==1) {  // 奇数个if (num >= *x && num <= *y) {  // 插在中间++x;y = x;} else if (num < *x) {y = x;  // 比x小} else {x = y;  // 比y大}} else {  // 偶数个if (num >= *x ) {++y;} else {--x;}}}double GetMedian(){ return double (*x + *y) / 2; }multiset<int> numbers;multiset<int>::iterator x, y;
};

剑指offer之数据流中的中位数相关推荐

  1. 【LeetCode】剑指 Offer 41. 数据流中的中位数

    [LeetCode]剑指 Offer 41. 数据流中的中位数 文章目录 [LeetCode]剑指 Offer 41. 数据流中的中位数 package offer;import java.util. ...

  2. 剑指offer:数据流中的中位数(小顶堆+大顶堆)

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

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

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

  4. 【LeetCode笔记】剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)

    文章目录 题目描述 知识点 1. 优先队列 2. Java 中 queue 的 offer.poll 等区别 思路 && 代码 二刷 打卡第十一天- 题目描述 虽然但是,这是一道很ni ...

  5. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  6. 【LeetCode】剑指 Offer 51. 数组中的逆序对

    [LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...

  7. 【LeetCode】剑指 Offer 56. 数组中数字出现的次数

    [LeetCode]剑指 Offer 56. 数组中数字出现的次数 文章目录 [LeetCode]剑指 Offer 56. 数组中数字出现的次数 package offer;import java.u ...

  8. 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字

    [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...

  9. 【LeetCode】剑指 Offer 61. 扑克牌中的顺子

    [LeetCode]剑指 Offer 61. 扑克牌中的顺子 文章目录 [LeetCode]剑指 Offer 61. 扑克牌中的顺子 一.集合Set + 遍历 二.排序 + 遍历 总结 解题思路 根据 ...

最新文章

  1. TP-link 设置MAC地址过滤
  2. arXiv灌水机:机器自动生成论文标题、摘要信息,还有40+奇妙AI应用
  3. Groovy简介和一点资源
  4. python 内置方法的时间复杂度
  5. python pcm 分贝_语音文件 pcm 静默(静音)判断
  6. 音视频技术开发周刊 54期
  7. H5实例 移动端页面练习
  8. O(logn)复杂度恐怖之处
  9. 测试用例又双叒叕失败了,NLP帮你
  10. IOS开发之手势——UIGestureRecognizer 共存
  11. redis 设置密码 和 redis.config文件
  12. 乘法口诀练习(python-for循环)
  13. 谈谈深浅拷贝的问题(1)
  14. day02 python基础
  15. 【听说隔壁老王开始学编程了?】
  16. arcgis 地下管线三维建模
  17. 2018.07.30 bzoj4355: Play with sequence(线段树)
  18. 操作系统思维导图(一)
  19. ios label文字行间距_ios实践之Label 字间距、行间距、两端对齐、分行显示
  20. Mybatis中的 useGeneratedKeys

热门文章

  1. 第4讲 李群与李代数
  2. 技巧|BurpSuite实现监听代理流量,隐匿身份
  3. R语言中按某个符号来分割字符串
  4. Python之Numpy常用操作
  5. Python之lambda表达式
  6. BigDecimal 计算余数
  7. Python:cv2.imwrite无法存储带有中文路径图片
  8. java_day01
  9. 5.Ray-Handler之ToReadHandler编写
  10. root用户Linux 环境变量的配置解决(-bash: jps: command not found)有关问题