1. 先给四个数排序
2. 排序后挨个数组建立字典树。 每处理一个新数组时,如果现有字典树里已有该数组,则它是重复的,忽略。现有字典树里没有该数组时,把这个数组加入字典树,以备将来查询。
优化1: 如果四个数字取值范围很小,可以直接列出所有排列组合,比hash更快。 比如每个数都是0-9取值,那四个数排序后也就1万种可能。 直接申请个10000的hash数组记录已发现的数据就行。
优化2: 如果数组数量庞大,内存放不下,可以先shard一下。用排序后的四个数字算个hash值,把所有数据分散到互相独立的子集里。 各个子集并行计算。 比如总数据量100T,但内存只能放1G数据。 先把原始数据里每个数组内部四个数排序后,模 100,000, 相当于hash到100,000的空间里,然后存成100,000个小文件。 每个文件1G。 各个小文件内部查重就行。 文件之间没有重复。
【 在 chzhang7901 (唯有不断前行) 的大作中提到: 】
: 有请明示:怎么用字典树
:
: 【 在 galaxy123 的大作中提到: 】
: : 排序 trie
--
发自xsmth (iOS版)
--
※ 修改:·galaxy123 于 Mar 12 02:53:53 2023 修改本文·[FROM: 74.88.40.*]
※ 来源:·水木社区
http://m.mysmth.net·[FROM: 74.88.40.*]
修改:galaxy123 FROM 74.88.40.*
FROM 74.88.40.*