代码改变世界

关于“如何只用2GB内存从20亿,40亿,80亿个整数中找到出现次数最多的数?”的一种思路

2019-06-12 17:52  新田三十三  阅读(611)  评论(0编辑  收藏  举报

小弟不才,只懂一些c#的皮毛,有一些想法,

int32值范围大概在-20亿——20亿,按hashtable一个keyvalue占8B的设定来说,最大可以存储大约2.5亿个 数字-次数对。

那么,可以将int32的范围分成大约分成16组,每组去遍历这20亿个数字,然后将每组的最大值保存下来,最后再从这16组的最大值再比较一次就可以了