题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
例如,
[2,3,4] 的中位数是 3
[2,3] 的中位数是 (2 + 3) / 2 = 2.5
设计一个支持以下两种操作的数据结构:
void addNum(int num) - 从数据流中添加一个整数到数据结构中。
double findMedian() - 返回目前所有元素的中位数。

思路

详见链接

代码

class MedianFinder:def __init__(self):self.store = []def addNum(self, num:int)->None:if not self.store:self.store.append(num)else:bisect.insort_left(self.store,num)def findMedian(self)->float:n = len(self.store)if n & 1 == 1:return self.store[n//2]else:return (self.store[n//2] + self.store[n//2]-1)/2# Your MedianFinder object will be instantiated and called as such:
# obj = MedianFinder()
# obj.addNum(num)
# param_2 = obj.findMedian()

剑指offer面试题41. 数据流中的中位数(二分查找)相关推荐

  1. 剑指offer面试题[64]-数据流中的中位数

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

  2. 剑指offer——面试题41:和为S的连续整数序列

    剑指offer--面试题41:和为S的连续整数序列 Solution1:我的答案 基本思路是根据等差数列的前n项和推导出首项与项数的关系,设首项为a1a1a_1,项数为kkk,和为S" ro ...

  3. 剑指offer:面试题41. 数据流中的中位数

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

  4. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  5. 剑指offer面试题[29]-数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  6. 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...

  7. [剑指offer]面试题41:和为s的两个数字VS和为s的连续正数序列

    面试题41:和为s的两个数字VS和为s的连续正数序列 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 代码如下: b ...

  8. 剑指Offer - 面试题51. 数组中的逆序对(归并排序,求逆序对)

    1. 题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1: 输入: [7,5,6,4] 输出: 5限制: 0 ...

  9. 剑指Offer - 面试题22. 链表中倒数第k个节点(快慢指针)

    1. 题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5 ...

最新文章

  1. Java Nashorn--Part 3
  2. 水准网测量平差matlab_【干货】史诗级测量大神分享道路测量全过程经验
  3. 数据结构:严蔚敏、殷人昆快速排序规则不同的疑问
  4. android用户界面-菜单
  5. jpa 查询 列表_终极JPA查询和技巧列表–第3部分
  6. php访问服务器文件路径,PHP与服务器文件系统的简单交互
  7. html:(32):字体,字号,颜色
  8. Hibernate Search 6.0.0.Alpha3 发布,数据检索框架
  9. 基于 RT-Thread Studio的CPK-RA6M4 开发环境搭建指南
  10. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--蜂鸣器封装(十七)
  11. 通过代理服务器下载网页
  12. Server:基本的服务器
  13. 前端基础总结--CSS
  14. matlab求x对应y值,matlab 不知道函数表达式,已知y值求x
  15. vue 安装(看图就够了,皮卡皮卡)
  16. 【HTML5 笔记】基础内容
  17. 【转】Eclipse启动之后卡顿,CPU占用率接近100%
  18. 随机生成6位数字(包括字母和数字)
  19. BUUCTF——web([GXYCTF2019]Ping Ping Ping、[极客大挑战 2019]Knife、[极客大挑战 2019]Http)
  20. 【河南省多校脸萌第六场 A】分班级

热门文章

  1. CentOS搭建Git服务器
  2. 指向结构体变量的指针变量
  3. mysql cluster 乱码_Mysql中文乱码问题完美解决方案
  4. 摩拜服务器维护,摩拜的后台是云服务器
  5. java怎么倒计时_详解java倒计时三种简单实现方式
  6. 戏说前端 JavaScript 之『防抖节流』基础知识
  7. php打印出网站源码/php数据压缩代码
  8. 考研复习(2)链表操作
  9. 图书配套光盘、部分软件下载
  10. php登录注册案例,php实现登陆与注册的案例