首页
题库
面试
求职
课程
竞赛
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收藏
18217浏览
热门推荐
相关试题
已知队列(Queue)支持先进先出...
美团
栈
队列
评论
(4)
一个文件记录中有50M个URL, ...
查找
海量数据
评论
(2)
关于进程的状态和状态转换,下列哪一...
操作系统
评论
(1)
使用全局置换算法,程序不可控制自身...
操作系统
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题