avatar
这个题怎么做啊?# JobHunting - 待字闺中
l*r
1
有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制
大小是1M。返回频数最高的100个词。
avatar
J*i
2
可以往硬盘写数据吗?
avatar
j*u
3
可以外排,map-reduce
或者以下优化的近似解法:
词+出现次数=20byte
1M可以放50k个词了,假设hashtable是ideal的
比如限制hashtable大小为10k,read file同时build hashtable的时候如果超过了10k个
item就drop频率低的一半,或者简单些用某一阈值
假设词在文件中出现相对均匀这个方法就可以work

【在 l*********r 的大作中提到】
: 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16个字节,内存限制
: 大小是1M。返回频数最高的100个词。

avatar
l*r
4
外排序用英文怎么说?

10k个

【在 j*****u 的大作中提到】
: 可以外排,map-reduce
: 或者以下优化的近似解法:
: 词+出现次数=20byte
: 1M可以放50k个词了,假设hashtable是ideal的
: 比如限制hashtable大小为10k,read file同时build hashtable的时候如果超过了10k个
: item就drop频率低的一半,或者简单些用某一阈值
: 假设词在文件中出现相对均匀这个方法就可以work

avatar
b*e
6
嗯,肯定是要 Divide and Conquer 了
读文件的时候按照词的长度和前缀甄别一下,写入不同的子文件中,
每个子文件的前100再来比较一下就可以了。
子文件过大的时候还要继续甄别。
这个其实就是 Bucket sort,只不过用文件当Bucket。

10k个

【在 j*****u 的大作中提到】
: 可以外排,map-reduce
: 或者以下优化的近似解法:
: 词+出现次数=20byte
: 1M可以放50k个词了,假设hashtable是ideal的
: 比如限制hashtable大小为10k,read file同时build hashtable的时候如果超过了10k个
: item就drop频率低的一半,或者简单些用某一阈值
: 假设词在文件中出现相对均匀这个方法就可以work

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。