【发布时间】:2011-07-15 11:30:09
【问题描述】:
给定 40 亿个数字,如何找到一个不在这 40 亿个数字中的数字?我们只有 1GB 的内存。
数字可以不连续。
如何在 10MB 内存中做同样的事情?
【问题讨论】:
-
这 40 亿个数字在哪里给出?数据库?一份文件?数组?网络?在哪里
-
数字是连续的吗?如果数字是连续的,这并不太难,如果不是,那就更难了。
-
我认为问题的意图是给定的数字在范围内随机分布,例如。我们有 1 到 1000 范围内的 900 个数字。我们如何用 100 个数字的存储量最有效地解决这个问题?以及如何仅用少量存储来解决它。只取一个 max() 可能不会产生答案,因为集合中可能有 1000 个。
-
@Abius:我想我们可以假设它们在磁盘上,因为我们有 RAM 的限制
-
@rsbarro: 不,数字绝对不是连续的,否则它是微不足道的
标签: algorithm