剑指offer之数据流中的中位数
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数
解题思路
肯定不能用排序,那样肯定会超时。更为稳妥的办法是使用std::multiset
结构,插入数据复杂度是log2N\log_2{N}log2N,同时支持前后迭代。注意迭代器没有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之数据流中的中位数相关推荐
- 【LeetCode】剑指 Offer 41. 数据流中的中位数
[LeetCode]剑指 Offer 41. 数据流中的中位数 文章目录 [LeetCode]剑指 Offer 41. 数据流中的中位数 package offer;import java.util. ...
- 剑指offer:数据流中的中位数(小顶堆+大顶堆)
1. 题目描述 /**如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的 ...
- 《剑指offer》数据流中的中位数
题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 解析: ...
- 【LeetCode笔记】剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
文章目录 题目描述 知识点 1. 优先队列 2. Java 中 queue 的 offer.poll 等区别 思路 && 代码 二刷 打卡第十一天- 题目描述 虽然但是,这是一道很ni ...
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- 【LeetCode】剑指 Offer 51. 数组中的逆序对
[LeetCode]剑指 Offer 51. 数组中的逆序对 文章目录 [LeetCode]剑指 Offer 51. 数组中的逆序对 package offer;public class Soluti ...
- 【LeetCode】剑指 Offer 56. 数组中数字出现的次数
[LeetCode]剑指 Offer 56. 数组中数字出现的次数 文章目录 [LeetCode]剑指 Offer 56. 数组中数字出现的次数 package offer;import java.u ...
- 【LeetCode】剑指 Offer 39. 数组中出现次数超过一半的数字
[LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 文章目录 [LeetCode]剑指 Offer 39. 数组中出现次数超过一半的数字 一.摩尔投票法 一.摩尔投票法 核心理 ...
- 【LeetCode】剑指 Offer 61. 扑克牌中的顺子
[LeetCode]剑指 Offer 61. 扑克牌中的顺子 文章目录 [LeetCode]剑指 Offer 61. 扑克牌中的顺子 一.集合Set + 遍历 二.排序 + 遍历 总结 解题思路 根据 ...
最新文章
- TP-link 设置MAC地址过滤
- arXiv灌水机:机器自动生成论文标题、摘要信息,还有40+奇妙AI应用
- Groovy简介和一点资源
- python 内置方法的时间复杂度
- python pcm 分贝_语音文件 pcm 静默(静音)判断
- 音视频技术开发周刊 54期
- H5实例 移动端页面练习
- O(logn)复杂度恐怖之处
- 测试用例又双叒叕失败了,NLP帮你
- IOS开发之手势——UIGestureRecognizer 共存
- redis 设置密码 和 redis.config文件
- 乘法口诀练习(python-for循环)
- 谈谈深浅拷贝的问题(1)
- day02 python基础
- 【听说隔壁老王开始学编程了?】
- arcgis 地下管线三维建模
- 2018.07.30 bzoj4355: Play with sequence(线段树)
- 操作系统思维导图(一)
- ios label文字行间距_ios实践之Label 字间距、行间距、两端对齐、分行显示
- Mybatis中的 useGeneratedKeys