做聊天网站的视频教程,云龙主机 wordpress,建设一个公司网站需要什么条件,网站开发进度缓慢1.从 40 个亿中产生一个不存在的整数
可以采用位图存储数据#xff0c;申请一个 bit 类型的数组 bitArr #xff0c;每个位置只表示 0 或者 1 状态#xff0c;可以将占用内存缩小为使用哈希表的 1/32 。
遍历给定的 40 亿个数#xff0c;遇到数时就将 bitArr 相应位置设置…1.从 40 个亿中产生一个不存在的整数
可以采用位图存储数据申请一个 bit 类型的数组 bitArr 每个位置只表示 0 或者 1 状态可以将占用内存缩小为使用哈希表的 1/32 。
遍历给定的 40 亿个数遇到数时就将 bitArr 相应位置设置为 1 。
遍历结束后再遍历 bitArr 哪个位置上的值是 0 那这个数就不在 40 亿个数中。
假如现在只有 10 MB 内存空间可用就可以考虑使用分块的方法。通过时间换取空间。
将数据平均分成多个区间只计算区间内的数据总有一个区间的数是少于其他区间的平均计数的那就可以从这个区间里用位图的方式找到没出现过的数。
2.用 2GB 内存在 20 亿个整数中找到出现次数最多的数
极端情况下这些数可以全部都不相同那么内存占用会非常大。
使用哈希函数将大文件分为小文件同一种数是不会被分到不同的小文件上的就可以得到每个小文件中出现最多的数以及次数统计。
3.从 100 亿个 URL 中查找重复项
同样使用哈希函数将文件拆分拆分要注意资源限制要明确将数据分到若干台机器或者分为若干个文件。
4. 40 亿个非负整数中找到出现两次的数
与第一位相同使用位图但是这次要用两倍大小的位图解决问题。
用两位表示一个数据初始为 00 每次出现都加一且加到 11 之后不再变动这样最后两位为 10 的位置表示的就是出现了两次的数。 如果对您有帮助请点赞关注支持我谢谢 ❤ 如有错误或者不足之处敬请指正 ❤ 个人主页星不易 ❤ 算法通关村专栏不易|算法通关村 ❤