有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
来源:互联网 发布:mac移除应用程序 编辑:程序博客网 时间:2024/05/16 01:15
①先把100W个关键字hash映射到小文件,根据题意,100W*50B = 50*10^6B = 50M,而内存只有1M,故干脆搞一个hash函数 % 50,分解成50个小文件;
②针对对每个小文件依次运用hashmap(key,value)完成每个key的value次数统计,后用堆找出每个小文件中value次数最大的top 10;
②针对对每个小文件依次运用hashmap(key,value)完成每个key的value次数统计,后用堆找出每个小文件中value次数最大的top 10;
③最后依次对每两小文件的top 10归并,得到最终的top 10。
注:很多细节需要注意下,举个例子,如若hash映射后导致分布不均的话,有的小文件可能会超过1M,故为保险起见,你可能会说根据数据范围分解成50~500或更多的小文件,但到底是多少呢?我觉得这不重要,勿纠结答案,虽准备在平时,但关键还是看临场发挥,保持思路清晰关注细节即可。
转自:http://blog.csdn.net/u010590166/article/details/17253427
0 0
- 有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
- 有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
- 对内存的认识
- 对内存的理解
- 对内存的思考
- 对内存的优化
- C++程序对内存的占用小窥
- mongodb 对内存的严重占用以及解决方法
- Java字符串找出4个字节长度的字符
- 判断一个数组(有n个数据,数组的值大于等于1小于等于N)里面是否有两个一样的数据
- 找出乘积等于2014的所有小于100的两个数
- 数学:给你长度1~n的线段 组成三角形最长边长度不超过你的n三角形有多少个
- 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符
- 汇编语言: 试编写一段程序,要求在长度为 100H 字节的数组中,找出大于 61H 的无符号数的个 数并存入字节单元 UP 中,找出小于 2FH 的无符号数的个数并存入字节单元 DOWN 中。
- 找出数组里大于等于左侧、小于等于右侧的所有数
- 要求在长度为100字节的数组中,找出大于42H的无符号数的个数并存 ;入字节单元UP中,找出小于42H的无符号数并存入DOWN中
- 1亿数据取前1w个数据不超过4秒的java 程序
- 1亿数据取前1w个数据不超过4秒的java 程序
- OkHttp的基本使用——替代Apache HttpClient
- Tyvj P1864 守卫者的挑战
- 安装mxnet
- 未将对象引用设置到对象实例(转)
- Spring的PropertyPlaceholderConfigurer应用与集成项目properties文件管理
- 有100W个关键字,长度小于等于50字节。用高效的算法找出top10的热词,并对内存的占用不超过1MB。
- android动画的实现
- 安卓命令学习
- 安卓完美退出App以及跨界面关闭Activity
- 解释型语言 跟 编译型语言的区别
- es6之Arrow Function
- [解决办法]MPLAB IDE打开自动关闭
- Mac OS原来自带了apache,基本用法总结
- 图像相关——DPI、PPI、像素、屏幕密度等关系与解释