剑指offer--面试题64:数据流中的中位数
来源:互联网 发布:网络电视剧排名榜 编辑:程序博客网 时间:2024/04/18 18:55
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
python实现:
# -*- coding:utf-8 -*-import heapqclass Solution: def __init__(self): self.smallerHeap = []#大顶堆 heapq.heapify(self.smallerHeap) self.biggerHeap = []#小顶堆 heapq.heapify(self.biggerHeap) def Insert(self, num): # write code here if len(self.smallerHeap) == len(self.biggerHeap): #在smallerHeap里加入元素 if len(self.biggerHeap)>0 and num > self.biggerHeap[0]: tmpNum = heapq.heappushpop(self.biggerHeap, num) heapq.heappush(self.smallerHeap, -tmpNum) else: heapq.heappush(self.smallerHeap, -num)#大顶堆,使用相反数 else: #在biggerHeap里加入元素 if len(self.smallerHeap)>0 and num < -self.smallerHeap[0]: tmpNum = heapq.heappushpop(self.smallerHeap, -num) heapq.heappush(self.biggerHeap, -tmpNum) else: heapq.heappush(self.biggerHeap, num) def GetMedian(self, x): # write code here size = len(self.smallerHeap) + len(self.biggerHeap) if size & 0x1 == 0:#偶数 return (-self.smallerHeap[0] + self.biggerHeap[0])/2.0 else: return -self.smallerHeap[0]
0 0
- 《剑指Offer》学习笔记--面试题64:数据流中的中位数
- 【剑指Offer学习】【面试题64:数据流中的中位数】
- 剑指offer-面试题64:数据流中的中位数
- 《剑指offer》面试题64 数据流中的中位数
- 剑指offer--面试题64:数据流中的中位数
- 剑指offer-面试题64-数据流中的中位数
- 剑指offer 面试题64 数据流中的中位数
- 剑指offer面试题[64]-数据流中的中位数
- 【剑指Offer】面试题64:数据流中的中位数
- 剑指offer面试题64 数据流中的中位数(Java实现)
- 面试题64:数据流中的中位数
- 面试题64:数据流中的中位数
- 【面试题64】数据流中的中位数
- 面试题64:数据流中的中位数
- 【剑指offer】面试题41:数据流的中位数
- 剑指offer 64-数据流中的中位数
- 《剑指offer》:[64]数据流中的中位数
- 【剑指offer】题64:数据流中的中位数
- 数据库索引的作用和优点缺点
- andorid 界面控制的知识
- RecycleView的用法
- node to traverse cannot be null!
- 跟我学Redis 目录
- 剑指offer--面试题64:数据流中的中位数
- 深度学习环境搭建 ubuntu16+GTX1080+CUDA8+Theano+Tensorflow+keras
- Cython(一)
- 百度,高德,天地图Android导航模块对比
- PAT(A) - 1075. PAT Judge (25)
- 【MYSQL】查询不区分大小写
- 微服务之RPC
- 系统设计过程
- 剑指offer面试题28: 字符串的排列