- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:输入在顺序文件中。该文件最多包含 40 亿个整数。查找缺失的整数。
解决方案据我理解:
制作两个临时文件,一个以0开头,一个以1开头
两个MUST之一(4.3B鸽子洞和4B鸽子)小于2B。选择文件并在第 2 位重复步骤 1 和 2,然后在第 3 位等等。
本次迭代的结束条件是什么?
此外,书中提到算法的效率为 O(n)但是,
第 1 次迭代 => n 个探测操作
第二次迭代 => n/2 次探测操作
.
.
.
n + n/2 + n/4 +... 1 => nlogn??
我错过了什么吗?
最佳答案
您将检查这两个文件并选择元素最少的文件。
您将重复该过程,直到您完成所有 32 位,最后您将拥有一个文件 0 元素。这是其中一个丢失的数字应该在的地方。因此,如果您一直在跟踪到目前为止过滤的位,您就会知道数字应该是多少。
请注意,这是查找一个(即“任何”)缺失的数字。如果给定一个包含 40 亿(不是 2^32
(4294967296))个整数的(无序)序列列表,您必须找到一个缺失的整数,这将不起作用,因为您可以在一开始就切断缺失的整数。
还有:
n + n/2 + n/4 + ... 1 <= 2n
不是n log n
.
这是一个geometric sequence与 a = n, r = 1/2
,可以用以下公式计算:
n (1-(1/2)^m)
-------------
1 - (1/2)
自 0 < (1/2)^m < 1
对于任何正数 m
(因为 0 < 1/2 < 1
),我们可以说 (1-r^m) < 1
因此我们可以说最大值是:
n.1
-------
1 - 1/2
n
= ---
1/2
= 2n
关于algorithm - 编程珍珠 : Finding the missing integer in a file of 4 billion integers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19398423/
有没有人研究过如何通过 USB 访问黑莓上的 gps 芯片组,从而无需通过手机运营商的数据网络传输此数据? 是否可以访问 GPS 芯片组、将信息存储在缓冲区中并打开接口(interface)连接(通过
我是一名优秀的程序员,十分优秀!