首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
有10个文件,每个文件1G,每个文件的每一行存放的都是用户的
[问答题]
有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序10个文件中的所有query。
添加笔记
求解答(0)
邀请回答
收藏(4)
分享
纠错
2个回答
添加回答
2
SkyWatcher
分别扫描10个文件,取key = hash(query),key % 100将10G的query分配到100个文件中,从而保证不同的query一定在不同文件。扫描100文件,添加到map(key,nums)统计key出现的次数并排序。如果query重复率不高,则根据内存情况(比如1G)分别统计[10n, 10(n+1)](n∈[0-10])然后排序,最后对10个文件进行归并排序即可。
发表于 2015-09-20 16:43:16
回复(1)
0
Cplo
1 hashtable到另外10个文件中(hash(query)%10),可以保证相同query进入同一文件;
2 分别求出10个文件的前10个频度的query,求最大建立大小为10的最小堆(反之建立最大堆);
3 对筛选的100个query再次建立大小为10的堆,找出最终结果。
发表于 2015-09-14 16:05:42
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
美团
海量数据
排序
上传者:
rootevil0
难度:
2条回答
4收藏
19086浏览
热门推荐
相关试题
给40亿个不重复的unsigned...
腾讯
海量数据
评论
(1)
实现方法:print_rotate...
美团
数组
评论
(3)
一个文件记录中有50M个URL, ...
查找
海量数据
评论
(2)
华华给月月准备礼物
思维题
评论
(5)
关于 asyncio 并发模型,以...
Python
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题