假設我有1GB可用內存,如何在這些URL之間找到重複項?給出100億個URL,每個URL的平均長度爲100個字符,檢查重複
我看到書上「破譯編碼訪談」一個解決方案,它建議使用哈希表在第一次掃描這些URL分割成4000個文件x.txt,X =散列(U)%4000。在第二次掃描中,我們可以檢查每個x.txt文件中的重複項。
但是我怎樣才能保證每個文件都能存儲大約1GB的url數據呢?我認爲有些文件可能會存儲比其他文件多得多的url數據。
我對這個問題的解決方案是迭代地實現文件分離技巧,直到文件足夠小,可用於我的內存。
有沒有其他方法可以做到這一點?
謝謝你這個極端的例子,我沒有想過!當您提到通過將每個值與一個計數相結合來「減少」文件時,是否將每個重複網址與計數編號結合起來以使它們與衆不同? –
@TonyL。 。 。是。在SQL世界中,我會說「通過URL聚合」。您可以使用散列匹配算法來減少數據量。 –