题目背景
给定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就会被映射到下标相同的小文件中
)- 求
每对小文件中相同的url
时,可以把其中一个小文件的url存储到hash_set中
。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中
,如果是,那么就是共同的url,存到文件里面就可以了。