数据结构——位图&布隆过滤器(解决大数据去重的问题)

位图和布隆过滤器是解决大数据去重问题的高效方法。位图通过数组和位运算来定位和标记数据,适用于元素范围确定且空间有限的情况。布隆过滤器则利用多个哈希函数和位数组,允许一定的误判率但确保不存在的元素一定不会误判为存在。在存储空间和性能之间做出权衡,适合于对误判率有一定容忍度的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

啊啊啊啊好久没打leecode了,数据结构慢慢地开始不记得了...(k恐怖!!!)

今天学习了一个数据结构——位图

位图:

位图是用来解决大数据去重的问题的。那说到去重,脑子里第一反应就是散列表,但是散列表最大的问题是所占用的空间非常大,如果像是解决网页爬虫中的URL去重功能,一个URL的长度平均是64字节,那所需要的内存也就相当大了。怎么解决这个空间问题呢?这里有一种比较特殊的散列表——位图。

位图的原理是用数组下标来定位数据。举个例子:有一千万个整数,范围在1到一亿之间,如何快速查找某个整数是否在这1千万个整数中呢?

按照位图的思想,需要申请一个一亿长度的bitmap,每个bit位上分别对应1—1亿的整数,这一千万个整数的存在形式对应bitmap中的bit位上的1。当我们查询某个整数是否存在在这1千万个整数中时,只需要把对应的bit取出来,为1,说明1千万个整数中包含这个整数,相反,就不包含这个整数。

有个比较生动形象的介绍,这里安利给大家:

https://mp.weixin.qq.com/s/xxauNrJY9HlVNvLrL5j2hg

用代码实现bitmap:

public class BitMap {

    private char[] bytes;
    private int nbits;

    public BitMap(int nbits)
    {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值