从一个数据流中取出中位数
用两个堆来实现,堆中元素个数相差<=1,
class Solution {
priority_queue<int, vector<int>, less<int> > p; //大顶堆(存的是一堆小元素)
priority_queue<int, vector<int>, greater<int> > q; //小顶堆(存的是一堆大元素)
public:
void Insert(int num){
if(p.empty() || num <= p.top()) p.push(num);
else q.push(num);
if(p.size() == q.size() + 2) q.push(p.top()), p.pop();
if(p.size() + 1 == q.size()) p.push(q.top()), q.pop();
}
double GetMedian(){
return p.size() == q.size() ? (p.top() + q.top()) / 2.0 : p.top();
}
};
从一个数据流中取出中位数相关推荐
- [剑指Offer] 数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 对 ...
- 剑指offer——数据流中的中位数
题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们使 ...
- 剑指offer:面试题41. 数据流中的中位数
题目:数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数 ...
- 《剑指offer》-- 序列化二叉树、二叉搜索树的第k个节点、数据流中的中位数、滑动窗口的最大值
一.序列化二叉树: 1.题目: 请实现两个函数,分别用来序列化和反序列化二叉树. 2.解题思路: (1)根据前序遍历规则完成序列化与反序列化.所谓序列化指的是遍历二叉树为字符串:所谓反序列化指的是依据 ...
- 《剑指offer》数据流中的中位数
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 解析: ...
- 牛客网 在线编程 数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...
- Python中的堆实现:heapq 模块——利用堆结构实现快速访问数据流中的中位数
堆结构 堆结构是一种优先队列,可以以任意顺序添加对象,并随时查找或删除最小(大)的元素,或者查找和删除前 K 个最小(大)元素.相比于列表方法min() / max(),这样做的效率要高得多. 堆结构 ...
- 【剑指offer】_18 数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们 ...
- 数据流中的中位数java_数据流中的中位数
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. import ...
最新文章
- 学java为什么要报java培训班?
- Latex中的列表环境[一]
- [C#基础知识系列]专题十七:深入理解动态类型
- 房地产企业大量海外融资,或将来资不抵债,被收购
- 如何快速安全的插入千万条数据?
- 学习笔记(47):Python实战编程-pack布局
- Oracle中关于计算时间差的例子:
- 在开发环境中,自己搭建一个ssl环境(小例子)
- 如果一个国家是一种颜色,中国的颜色美哭了!
- mysql报错1200_关于MYSQL配置replicate出现1200错误_MySQL
- python狗屁不通文章生成器_狗屁不通文章生成器,哈哈哈
- JSP基础教程-初时index首页
- 模拟CMOS集成电路设计基础 第一章 第二章开头
- 【实习之T100开发】T100 单档程序开发,java工程师面试突击中华石杉
- 如何在vue项目中增加网页logo
- 10个物联网应用的案例
- 最GIS应用案例——告诉你什么是GIS!
- php百度优化,百度技术沙龙第 24 期 PHP 性能优化实践
- Ubuntu下键盘输入错乱问题,输入自动变为希腊字母和符号
- scp传文件指定端口、传输目录
热门文章
- 在python中字典和集合都是用一对什么作为界定符_Python习题(一)
- RocketMQ基础概念剖析源码解析
- 微盟耗时 145 个小时弥补删库,血亏 1.5 亿元!
- 手把手带你手写SpringMVC,剑指优秀开源框架灵魂
- 漫画:当程序员有了下一代.....
- 漫画:云市场下,运营商甲方爸爸也出来抢乙方生意了?
- JimuReport积木报表——分组报表怎么做
- MiniDao_1.6-SNAPSHOT 版本发布,轻量级Java持久化框架
- JEECG - 基于代码生成器的J2EE智能开发框架 续二: 代码生成器使用规则
- leetcode75