数据结构:大数据处理问题

本文探讨了大数据处理中的几个经典问题,包括寻找只出现一次的整数、查找文件交集、限制次数的整数查找、近似与精确交集算法以及布隆过滤器的删除支持。通过位图和布隆过滤器等数据结构,提出了解决这些问题的有效策略。
1.给定100亿个整数,设计算法找到只出现一次的整数?

①方法一
100亿个整数就是400亿个字节,42亿九千万是4G,那么1G就是10亿字节,所以要存下100亿个整数需要40G的内存空间。因此我们采用位图100亿个整数大概就是1G,但是使用位图,需要用两个位标识一个数字(两个位可以标识四种状态),没有出现过为00,出现一次为01,出现两次及以上为10,11可以丢弃。所以2G空间就够了。
那么现在我们要找到只出现一次的整数就找到位图中映射01的那个数据即可。

②方法二
采用两个位图,每个位图是1G的大小,两个位图对应的位标识一个数据,两个位图对应的位都是0表示没有出现过;第一个位图对应位0,第二个位图对应位1则表示这个数只出现了一次;第一个位图对应位1,第二个位图对应位0则表示这个数出现了两次或两次以上。

2.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件的交集?

①方法一
我们开一个位图,把第一个文件中的数字set到位图中,用第二个文件进行查找test,如果第二个文件中的数据在位图中被找到了,那么这个数就是交集的一份子,当把第二个文件中的数据查找完时就可以找到交集了。

②方法二
开两个位图,把文件1的数据set到位图1中,把文件2的数据set到位图2中,然后把两个位图进行与操作,那么与出来的结果位图中对应位为1的位所对应的数据的集合就是交集。

3.一个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数?

出现次数不超过2次的所有整数,一共有四种状态,因此需要用两个位来进行标识,00标识没有出现,01表示出现一次,10表示出现两次,11表示出现两次以上。找出现次数不超过2次的就是查找对应标识位为00,01,10的数据。

4.给两个文件,分别有100亿个query,我们有1G内存,如何找到这两个文件的交集?分别给出精确算法和近似算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值