题目:
有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。限制内存只有2GB。
解法:
32位bit,占用4Byte,20亿,就是8GB大小。2GB内存,很明显,我们无法直接加载到内存。
所以继续是分而治之的思路,我们可以把这个大文件,hash成20个小文件,这样每个文件,加载到内存,只需要400mb。
我们可以先后加载每个小文件,计算统计里面每个整数的出现次数。最后只去top 1.
所有小文件都统计计算完成后,汇总,找到top 1.
本文探讨了在有限内存条件下,如何从一个包含20亿个32位整数的大文件中找出出现次数最多的数。通过将大文件hash成20个小文件,逐个加载并统计各整数出现频率,最终汇总找到全局top1。
题目:
有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。限制内存只有2GB。
解法:
32位bit,占用4Byte,20亿,就是8GB大小。2GB内存,很明显,我们无法直接加载到内存。
所以继续是分而治之的思路,我们可以把这个大文件,hash成20个小文件,这样每个文件,加载到内存,只需要400mb。
我们可以先后加载每个小文件,计算统计里面每个整数的出现次数。最后只去top 1.
所有小文件都统计计算完成后,汇总,找到top 1.
6200

被折叠的 条评论
为什么被折叠?