given 10 billion URL with average length 100 characters per each url, check duplicate

Viewed 1241

Suppose I have 1GB memory available, how to find the duplicates among those urls?

I saw one solution on the book "Cracking the Coding Interview", it suggests to use hashtable to separate these urls into 4000 files x.txt, x = hash(u)%4000 in the first scan. And in the 2nd scan, we can check duplicates in each x.txt separately file.

But how can I guarantee that each file would store about 1GB url data? I think there's a chance that some files would store much more url data than other files.

My solution to this problem is to implement the file separation trick iteratively until the files are small enough for the memory available for me.

Is there any other way to do it?

2 Answers
Related