大数据有关题目

这篇博客讨论了几个大数据相关的问题,包括使用位图和哈希函数解决32位无符号整数范围内未出现的数、10MB内存下查找未出现的数,以及如何在1GB内存限制下找出重复的数。还提到了布隆过滤器在处理海量URL重复问题中的应用,并给出了如何在大规模词汇数据中找出每日热门词汇的方案。
摘要由CSDN通过智能技术生成

大数据有关题目

哈希函数可以将数据按照种类均匀分流。

布隆过滤器用于集合的建立与查询,同时节省大量空间。

一致性哈希解决数据服务器的负载管理问题。

利用并查集结构做岛问题的并行问题。

位图解决某一范围上数字的出现问题,同时节省大量空间。

利用分段统计思想,并进一步节省大量空间。

利用堆、外排序做多个处理单元的结果合并。

题目一:

32位无符号整数的范围是0-4294967295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有没出现过的数。可以使用最多1GB的内存,怎么找到所有没出现过的数?
进阶:内存限制为10MB,但是只用找到一个没出现过的数即可。

普通:如果用哈希表来保存出现过的数,那么如果40亿个数都不同,则哈希表的记录为40亿条,存一个32位整数需要4B,所以最差情况下需要40亿*4B=160亿字节,大约需要16GB的空间,这是不符合要求的。

​ 哈希表需要占用很多空间,我们可以使用bit map的方式来表示数出现的情况。具体地说,是申请一个长度为4294967295的bit类型的数组bitArr,bitArr上的每个位置只可以表示0或1状态。8个bit位1B,所以长度为4294967295的bit类型的数组占用500MB的空间。
​ 怎么使用这个bitArr数组呢?就是遍历这40亿个无符号数,例如,遇到7000,就把bitArr[7000]设置为1,遇到所有的数时,就把bitArr相应位置的值设置为1。
​ 遍历完成后,再依次遍历bitArr,哪个位置上的值没有被设置为1,哪个数就不在40

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值