首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
给上千个文件,每个文件大小为1K—100M。给n个词,设计算
[问答题]
给上千个文件,每个文件大小为1K—100M。给n个词,设计算法对每个词找到所有包含它的文件,你只有100K内存
查看答案及解析
添加笔记
求解答(3)
邀请回答
收藏(118)
分享
纠错
7个回答
添加回答
2
为你扣下F键
用n个词构建字典树,然后每个文件都来跑一遍该字典树即可
发表于 2019-03-11 21:58:07
回复(0)
1
孤寡孤寡的熊猫很安静
这个题,难道不是用倒排索引?
发表于 2018-05-25 10:55:23
回复(0)
1
逐梦者的脚步
应该采用AC自动机
发表于 2019-04-12 09:23:43
回复(0)
0
勇士夺冠
0: 用一个文件info 准备用来保存n个词和包含其的文件信息。
1 : 首先把n个词分成x份。对每一份用生成一个布隆过滤器(因为对n个词只生成一个布隆过滤器,内存可能不够用)。把生成的所有布隆过滤器存入外存的一个文件Filter中。
2:将内存分为两块缓冲区,一块用于每次读入一个布隆过滤器,一个用于读文件(读文件这个缓冲区使用相当于有界生产者消费者问题模型来实现同步),大文件可以分为更小的文件,但需要存储大文件的标示信息(如这个小文件是哪个大文件的)。
3:对读入的每一个单词用内存中的布隆过滤器来判断是否包含这个值,如果不包含,从Filter文件中读取下一个布隆过滤器到内存,直到包含或遍历完所有布隆过滤器。如果包含,更新info 文件。直到处理完所有数据。删除Filter文件。
备注:
1:关于布隆过滤器:其实就是一张用来存储字符串hash值的BitMap.
2:可能还有一些细节问题,如重复的字符串导致的重复计算等要考虑一下。
编辑于 2016-10-25 15:38:40
回复(2)
0
当时的我想不到今天
使用Hash不是更简单吗
发表于 2015-08-24 17:26:02
回复(2)
0
慈慈乱了
若文件大于100M就分成100K个子文件 然后用把文件内的单词做成字典树,然后查找 要是找到的话就属于这个文件
发表于 2015-07-22 10:03:19
回复(0)
0
陈木木
使用trie树即可
编辑于 2015-05-18 13:21:26
回复(2)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
高级结构
上传者:
陈木木
难度:
7条回答
118收藏
8018浏览
热门推荐
相关试题
Disjoint-set data...
网易
高级结构
评论
(1)
下面两个传送指令语句中源操作数寻址...
编译和体系结构
评论
(1)
小O的整数操作
贪心
OPPO
基础数学
评论
(1)
设主存容量为256MB,外存容量为...
操作系统
评论
(1)
执行以下程序,输出结果为() le...
Javascript
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题