我的任务是找到解决以下真实问题的方法,我对如何解决它感到困惑。
我们拥有1亿个数字和10亿个数字数组(每个数组最多可容纳1000个唯一数字)。
我们选择1.000随机数。我们正在尝试查找包含超过1个1.000数字的数组的ID。如果有超过10,000个这样的数组,我们只需要第一个10.000。
在每个数字的文件中,我们存储出现数字的数组的ID。我们可以通过读取每个数字的所有数组ID并处理它们来解决问题。但是这些ID每个都是8个字节,所以如果我们的数字出现在每个数组上,我们需要读取每个数字8 * 10亿= 8GB的数据。如果我们采取更糟糕的情况,我们需要从HDD 8GB * 1.000 = 8TB读取。这需要数天,而不是1秒。
问题:如何在1秒(或几秒钟)内完成此操作而不是几天?
提示:似乎我的问题类似于搜索引擎所面临的问题。我没有这方面的经验,但有人在这里真的很有帮助。