参考:https://www.nowcoder.com/questionTerminal/cdd98d9efb2547b2bfab4ec96a63f22e
题目背景
给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url
主体思路
分治+hash
实现步骤
- 遍历文件A,对每个url使用
hash(url) % 1000,根据所得的取值将url存储到1000个小文件中(a1,a2,…,a1000)(根据内存大小设定hash函数) - 遍历文件B,使用同样的hash函数将B中的url存储到1000个小文件中(b1,b2,…,b1000)(这样相同的url就会被映射到下标相同的小文件中)
- 读取文件a1,简历hash表,再读取文件b1,遍历其中的url,若url在hash表中出现,说明为两文件共有,存入结果中。
本文介绍了一种在内存限制条件下,高效找出两个大型文件中共同URL的算法。通过分治和hash策略,将任务分解为处理小文件集合,显著降低了计算复杂度。
2155

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



