275

问答题 275 /376

如何对10亿个词语进行排序,找出频率最高的100个

参考答案

参考回答:
顺序读取每个词x,取hash(x)/m,然后按照该值存到这m个小文件中,对于每个小文件,依次统计每个文件中出现的词以及相应的频率,统计出出现频率最高的100个词,并将这100个词和频率存入文件,从而得到m个新的文件然后将这m个文件进行归并找出出现频率最高的100个词。


(腾讯)10亿个32位的数据,放到4G的空间里,怎么找出只出现一次的数据的个数。

32位数据共有2^32个数,因此设置一个2^32大小的数组(4g)。遍历数据,把每一个数放到数组中对应下标的位置,个数加一。数组中最终值等于一的下标即为要找的数据。计算的过程中注意数据正负值和下标的对换。