题目描述

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
 
题解:
  目前想不出更好的方法,待续更新。。。
 
  

 class Solution {
private:
vector<int> min;
vector<int> max;
public:
void Insert(int num)
{
int size=min.size()+max.size();
if((size&)==)
{
if(max.size()> && num<max[])
{
max.push_back(num);
push_heap(max.begin(),max.end(),less<int>());
num=max[];
pop_heap(max.begin(),max.end(),less<int>());
max.pop_back();
}
min.push_back(num);
push_heap(min.begin(),min.end(),greater<int>());
}
else
{
if(min.size()> && num>min[])
{
min.push_back(num);
push_heap(min.begin(),min.end(),greater<int>());
num=min[];
pop_heap(min.begin(),min.end(),greater<int>());
min.pop_back();
}
max.push_back(num);
push_heap(max.begin(),max.end(),less<int>());
}
} double GetMedian()
{
int size=min.size()+max.size();
if(size<=)
return ;
if((size&)==)
return (max[]+min[])/2.0;
else
return min[];
} };

最新文章

  1. windows Service
  2. Android Studio 解决更新慢的问题
  3. iOS开发之网络数据解析(一)--JSON解析简介
  4. 翻阅《数据结构与算法javascript描述》--数组篇
  5. jQuery Mobile_公司简介
  6. Java中for循环以及循环中标签
  7. 学c语言做练习之​统计文件中字符的个数
  8. POJ 2263 Heavy Cargo(Floyd + map)
  9. 文章13称号 Add Two Numbers
  10. Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler) 分析
  11. CodeForces 669D Little Artem and Dance
  12. 关于package.json的理解
  13. c语言基础知识
  14. java里String类为何被设计为final
  15. Hadoop综合大作业
  16. 利用ResultFilter实现asp.net mvc 页面静态化
  17. deep learning的一些知识点
  18. jquery判断表单内容是否为空
  19. JVM内存布局
  20. s-axis-config-tdata

热门文章

  1. PHP面试 MySQL创建高性能索引考点
  2. Leetcode_415字符串相加
  3. 清除浮动最有效的css写法
  4. __name__ 与 __main__解读
  5. python-装饰器初识,闭包
  6. oracle null+字符串问题
  7. C#5.0 异步编程 Async和Await--介绍
  8. Linux运行jar包
  9. 前端学习(十七)js数组(笔记)
  10. redis搭建主从