大数据方面问题的解决办法和技巧

大数据题目的解题技巧

  1. 哈希函数可以把数据按照种类均匀分流
  2. 布隆过滤器用于集合的建立与查询,并可以节省大量空间
  3. 一致性哈希解决数据服务器的负载管理问题
  4. 利用并查集结构做岛问题的并行计算
  5. 位图解决某一范围上数字的出现情况,并可以节省大量空间
  6. 利用分段统计思想、并进一步节省大量空间
  7. 利用堆、外排序来做多个处理单元的结果合并

题目1 找到未出现的数

32位无符号整数的范围是0~4,294,967,295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然存在没出现过的数。可以使用最多1GB的内存,怎么找到所有未出现过的数?
【进阶】
内存限制为3KB,但是只用找到一个没出现过的数即可

【再次进阶】
使用有限几个变量,但是只用找到一个没出现过的数即可

解法:位图

该题无符号整数的范围为0 到 232-1,无符号整数的个数为40亿个。
想要将范围上的所有数字存储在 bit 数组上。所需的数组长度是232,需要的内存为232/8(Byte)约等于512M左右,遍历该文件将出现的数所对应的bit 位变成1,剩下为0的位置对应的数就是没有出现过的数。

进阶问题解法:无符号整型数组 + 范围统计

3KB可以生成无符号整型数组为 3*1024/4=768。找到一个最接近这个数的2的某次方,即5

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值