只用2GB内存在20亿个整数中找到出现次数最多的数
来源:互联网 发布:net软件开发培训 编辑:程序博客网 时间:2024/06/05 02:37
题目
有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数,内存限制为2GB。
思路
在整数中找到出现次数最多的数,通常做法是使用哈希表对出现的每一个数做词频统计,Key为整数,Value为出现的次数。本题中,32位的整数作为Key,需要4B空间,Value最大值为20亿(在20个数均为同一个数的情况下),用32位的整数完全可以存储,也需要用4B内存空间,这样,一个键值对需要占用8B的内存空间。在内存为2GB的情况下,最多能存储268435456条记录,显然,用2GB的内存空间统计会有风险。
解决方法把包含20亿条记录的大文件用哈希函数分成16个小文件,根据哈希函数的性质,同一个数不可能被分到不用的小文件上,同时,每个小文件中不同的数一定不会大于2亿种,假设哈希函数足够好。然后对每一个小文件用哈希表统计其中每种数出现的次数,这样16个文件共产生16个出现次数最多的数,再求出出现次数最多的即可。
阅读全文
0 0
- 只用2GB内存在20亿个整数中找到出现次数最多的数
- 只用2GB内存在20亿个整数中找到出现次数最多的数
- 只用2GB内在20亿个整数里中找到出现次数最多的数
- 只用2GB的内存找出20亿个整数中找到出现次数最多的数
- 求整数序列中出现次数最多的数
- 找到出现次数最多的数并输出次数
- 在1000个数中找出出现次数最多的数
- 从一有序数组中,找到一出现次数最多的数
- 数组中出现次数最多的数及出现次数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 出现次数最多的整数
- 米扑代理:爬虫代理IP哪家好呢
- 数据全链路监控
- windows下python3扩展包的配置
- OpenGL ES着色器语言之内建函数
- MFC串行化类CArchive
- 只用2GB内存在20亿个整数中找到出现次数最多的数
- LeetCode
- 开发者 常用网站
- 八大排序算法(2) 希尔排序
- 易错java笔试题
- 生产者消费者
- C++11新特性-lambda函数
- hdu1518
- 线上WEB部署