BAT面试题——URL查重及布隆过滤器Bloom

欢迎关注,敬请点赞!

问题描述:
给你A、B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是16G,让你找出A、B文件共同的URL。

常规的解决办法

也是最容易想到的,就是对于文件A,读入内存。对于文件B中的每一个元素,判断是否在A中出现过。
我们来分析一下这样做的空间和时间复杂度:第一步,读入文件到内存,需要的内存是 50 ∗ ( 10 ∗ ∗ 8 ) ∗ 64 = 320 G 50*(10**8)*64 = 320G 50(108)64=320G ,显然我们在实际中没有那么大的内存。

另外,通过遍历A文件和B文件中的每一个元素,需要的时间复杂度是 o ( M ∗ N ) o(M*N) o(MN),M、N是两个文件元素的大小,时间复杂度是 ( 50 亿 ∗ 50 亿 ) (50亿*50亿) (50亿50亿)

布隆过滤器

基本思路:

Bloom过滤器

  1. 设数据集合 A = { a 1 , a 2 , … … , a n } A = \lbrace a_1, a_2, ……, a_n \rbrace A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值