【发布时间】:2018-05-28 16:46:28
【问题描述】:
基本方法是使用数组或哈希图来创建数字直方图并选择最频繁的。
在这种情况下,我们假设文件中的所有数字都无法加载到主内存中。
我能想到的一种方法是使用外部合并/快速排序进行排序,然后逐块计算频率。由于它们是排序的,我们不必担心在带有数字的序列结束后再次出现数字。
有没有更好更有效的方法来做到这一点?
【问题讨论】:
-
这是一个面试题吗?为什么一百万个整数放不下内存?
-
数字的范围是多少
-
使用 Unix 运算符对其进行流式传输...使用
head -n1查找最大值。 unix.stackexchange.com/q/170043/148686 -
是的,这是一个面试问题。数字的范围未知。
-
@kevmo314 因为您正在使用一个可用内存非常有限的系统?或者,让我们将其设为一万亿长整数。这个想法是您拥有的数据超出了可用内存的容量。实际数字并不重要。