面试题64 数据流中的中位数
2016-04-10 22:06
417 查看
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。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(); } };
相关文章推荐
- 面试题63 二叉搜索树的第k个结点
- 前端面试题整理——CSS篇
- 面试题62 序列化二叉树
- 面试题61 把二叉树打印成多行
- 面试题60 按之字形顺序打印二叉树
- JAVA多线程和并发基础面试问答
- 【转】程序员技术练级攻略
- LeetCode(39)-Intersection of Two Linked Lists
- 面试题59 对称的二叉树
- 一位Google程序员的算法学习之路
- Android面试常问的技术问题
- 面试题58 二叉树的下一个结点
- SSH框架整合配置所需JAR包(SSH整合)
- 面试题57 删除链表中重复的结点
- Activity生命周期(面试必问)
- error 和 exception的区别
- Android中的Activity四种启动模式(launchMode)(面试必问)
- 面试题56 链表中环的入口结点
- 程序员常识
- 面试题55 字符流中第一个不重复的字符