剑指offer——43数据流中的中位数
2024-10-07 19:11:25
题目描述
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用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[];
} };
最新文章
- windows Service
- Android Studio 解决更新慢的问题
- iOS开发之网络数据解析(一)--JSON解析简介
- 翻阅《数据结构与算法javascript描述》--数组篇
- jQuery Mobile_公司简介
- Java中for循环以及循环中标签
- 学c语言做练习之​统计文件中字符的个数
- POJ 2263 Heavy Cargo(Floyd + map)
- 文章13称号 Add Two Numbers
- Linux 2.6 完全公平调度算法CFS(Completely Fair Scheduler) 分析
- CodeForces 669D Little Artem and Dance
- 关于package.json的理解
- c语言基础知识
- java里String类为何被设计为final
- Hadoop综合大作业
- 利用ResultFilter实现asp.net mvc 页面静态化
- deep learning的一些知识点
- jquery判断表单内容是否为空
- JVM内存布局
- s-axis-config-tdata