返回信息流给定一个文件,存着各种字符串,现在要求出出现次数最多的n个字符串,要求得到字符串及对应次数,内存不够,求完整思路
这是一条镜像帖。来源:北邮人论坛 / java / #61670同步于 2019/4/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
阿里面试算法题(思路即可)
striverss
2019/4/5镜像同步52 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
文件分部分一段段的读取,对字符串的hash值计数。
考虑到内存有可能存hash值也存不下,hash值计数可以存磁盘上,利用LRU算法,内存放一部分的hash值计数。
计数完,用堆求topn
首先,大文件字符串hash分桶到几个小文件,然后统计每个文件中字符串的频度(hashmap或者trie tree),然后求多个小文件的topn频度的串,再进行合并(可以用小根堆,或者分别排序后,进行合并)。