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

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,1
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值