如何在10万个单词中找出出现次数最高的100个。

看到好多面试都有这道题目。#百度##腾讯##阿里巴巴#
全部评论
如果总的单词数不是10万,而是百亿的数据量,那么最开始得用哈希分流的思路来处理。
点赞 回复 分享
发布于 2016-12-04 20:47
闲的无聊,再写写吧, 为什么要用小根堆呢?其实是因为我们要维护堆的大小为100,所以每当有一个新的单词的count足够大,其实比小根堆堆顶的count大就行了,以至于我们能够插入它的时候,那么我们应该在原先的100个单词中删除对应的count最小的单词,如果用小根堆,我们就可以直接删除堆顶元素。然后插入新的单词。
5 回复 分享
发布于 2016-12-04 20:42
哈希表,key是单词,value是计数
点赞 回复 分享
发布于 2016-12-04 20:23
某个单词的count指的是对应单词出现的次数
点赞 回复 分享
发布于 2016-12-04 20:44
最后,遍历完哈希表的时候,我们就可以得到最后的答案
点赞 回复 分享
发布于 2016-12-04 20:43
然后用小根堆或外排序
点赞 回复 分享
发布于 2016-12-04 20:33
很简单,spark并行化处理
点赞 回复 分享
发布于 2016-12-04 16:41
使用小顶堆即可
点赞 回复 分享
发布于 2016-12-04 16:11
用堆排序
点赞 回复 分享
发布于 2016-12-04 15:32
堆,还有快排
点赞 回复 分享
发布于 2016-12-07 10:39

相关推荐

FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务