Redian新闻
>
能在这里问个算法题目么?
avatar
能在这里问个算法题目么?# JobHunting - 待字闺中
e*m
1
不是面试题,而是实际工作中遇到的一个问题。本人不怎么懂算法,向版上大牛们请教:
有一个实时采集的数列,想随时更新最后采集的N个数的中位数,但又不保存(至少不
全部保存)这N个数。请问这个问题可行么?
也就是想实时计算最后一段时间采集的数据的中位数,但是由于条件限制不能全部保存
所有数据。
多谢!
avatar
l*8
2
保存最后N个数字的histogram可以吗?

教:

【在 e*****m 的大作中提到】
: 不是面试题,而是实际工作中遇到的一个问题。本人不怎么懂算法,向版上大牛们请教:
: 有一个实时采集的数列,想随时更新最后采集的N个数的中位数,但又不保存(至少不
: 全部保存)这N个数。请问这个问题可行么?
: 也就是想实时计算最后一段时间采集的数据的中位数,但是由于条件限制不能全部保存
: 所有数据。
: 多谢!

avatar
e*m
3
我不是码工,不是特别明白你的意思,能否展开说说?多谢!

【在 l*********8 的大作中提到】
: 保存最后N个数字的histogram可以吗?
:
: 教:

avatar
l*8
4
比如N = 10。
最后10个数是: 2 3 2 8 8 2 8 10 3 10
那么就保存为 2=>3(2出现了3次), 3=>2, 8=>3, 10=>2

【在 e*****m 的大作中提到】
: 我不是码工,不是特别明白你的意思,能否展开说说?多谢!
avatar
e*m
5
哦哦。。。问题是新进来的数在HISTGRAM上+1就可以了,挤出去的那个数的频数怎么
更新?

【在 l*********8 的大作中提到】
: 比如N = 10。
: 最后10个数是: 2 3 2 8 8 2 8 10 3 10
: 那么就保存为 2=>3(2出现了3次), 3=>2, 8=>3, 10=>2

avatar
l*8
6
如果把2挤出去,就把2的count减一。

【在 e*****m 的大作中提到】
: 哦哦。。。问题是新进来的数在HISTGRAM上+1就可以了,挤出去的那个数的频数怎么
: 更新?

avatar
e*m
7
麻烦就是在这里:由于环境的限制无法保存所有的数,所以不知道马上要被挤出去的数
是什么。

【在 l*********8 的大作中提到】
: 如果把2挤出去,就把2的count减一。
avatar
l*8
8
唉,是啊。。。。我再想想

【在 e*****m 的大作中提到】
: 麻烦就是在这里:由于环境的限制无法保存所有的数,所以不知道马上要被挤出去的数
: 是什么。

avatar
p*o
9
设m为N个数里unique的数的个数,你的m/N的概率密度函数大致长什么样?

教:

【在 e*****m 的大作中提到】
: 不是面试题,而是实际工作中遇到的一个问题。本人不怎么懂算法,向版上大牛们请教:
: 有一个实时采集的数列,想随时更新最后采集的N个数的中位数,但又不保存(至少不
: 全部保存)这N个数。请问这个问题可行么?
: 也就是想实时计算最后一段时间采集的数据的中位数,但是由于条件限制不能全部保存
: 所有数据。
: 多谢!

avatar
h*d
10
看看这个?
http://stackoverflow.com/questions/10657503/find-running-median

教:

【在 e*****m 的大作中提到】
: 不是面试题,而是实际工作中遇到的一个问题。本人不怎么懂算法,向版上大牛们请教:
: 有一个实时采集的数列,想随时更新最后采集的N个数的中位数,但又不保存(至少不
: 全部保存)这N个数。请问这个问题可行么?
: 也就是想实时计算最后一段时间采集的数据的中位数,但是由于条件限制不能全部保存
: 所有数据。
: 多谢!

avatar
f*w
11
用两个heap那个也没法解决内存限制的问题啊。本质上还是存了所有的数据,只是保证
了O(1)的复杂度。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。