我有一个大文件(比如10兆字节)和MD5哈希流(其中包含重复项),我有一个10MB的内存(非常有限)和无限的硬盘空间。使用给定条件查找所有唯一散列(消除重复项)。请帮忙,这显然不是家庭作业问题

最佳答案

您可以使用外部排序算法(例如,使用polyphase merge sort)对散列进行排序,之后您只需遍历文件并跳过任何等于最新散列的散列

hash mostRecentHash;
while(fileHasHashes) {
    temp = fileWithDuplicates.readHash();
    if(!hashesAreEqual(mostRecentHash, temp)) {
        mostRecentHash = temp;
        fileWithoutDuplicates.writeHash(mostRecentHash);
    }
}

08-08 04:30