发布时间:2025-05-11 12:06:43 点击量:
HASH GAME - Online Skill Game GET 300
所以可以在输入经过哈希函数以后取模m100;那么每一个输入最后都会得到一个0-99之间的数字将相同的输出对应的输入放进同一个文件根据哈希函数的均匀分布性每个文件储存的数字都是输入数据量的百分之一这时候用1G的内存来遍历计算每个文件的最高词频1G内存对于每个文件的数据量是戳戳有余的
??所以为了省事就可以设定每一个链表的最大长度当某个哈希值对应的链表的长度到达阈值的时候根据哈希函数的均匀分布性表明所有的key对应的链表几乎都达到了阈值哈希表空间就会进行扩容然后重新计算原来已经放进老哈希表中的输入对应的新哈希值这里就是扩容代价包括哈希表扩大和重复计算的代价
??哈希表扩大空间的次数O(logN);假如有1000个输入那么假如原始的哈希表的空间为2随着输入的增加哈希表空间扩大到1000扩容次数就是O(log100)每一次扩容以后重复计算的时间时间复杂度为O(N);所以总的时间复杂度就为O(NlogN),所以N个输入扩容代价最多是O(NlogN)单次扩容代价就为O(logN);这是在哈希表的值对应的链表长度阈值为2时得出的结果;