arrays - 包含 n-2 个整数 1 到 n 的数组,O(n) 算法如何用 O(1) 额外空间查找缺失的 2 个数字?

标签 arrays algorithm sorting

Possible Duplicate:
Find two missing numbers

我思考了一段时间,似乎无法得到这个问题的答案...所以一个数组,其中包含 n-2 个唯一整数,范围从 1 到 n,并且除了空间之外还有 O(1) 空间给出了数组所使用的。如何在 O(n) 时间内找到数组中缺失的从 1 到 n 的两个整数?

例如,a = [4,3,1,6] 和 O(1) 额外空间 如何在 O(n) 时间内找到 2、5?

最佳答案

这里有一个想法:只需保留一些统计数据即可为您提供有关缺失数字的信息。例如,如果您将所有数字的总和计算为 S,则:

(1+2+..+N) - S = a+b

其中 a 和 b 是缺失的数字。在您的示例中,您将得到:

1+2+3+4+5+6 - 4+3+1+6 = 7 = a+b

然后您也可以执行相同的操作,例如,对于乘法和 get:

(1*2*..*N) / S = a*b

就你的情况而言:

(1*2*3*4*5*6) / 72 = 10 = a*b

所以答案是 2 和 5。

基本上有很多统计数据可以通过这种方式使用......

关于arrays - 包含 n-2 个整数 1 到 n 的数组,O(n) 算法如何用 O(1) 额外空间查找缺失的 2 个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12739357/

相关文章:

javascript - react : Delay rendering of JSON data?

java - 查找 k - 最小元素(Java 代码)

java - QuickSort的修改(分区Hoare),先偶数降序,然后奇数降序

java - java中用于对对象数组进行排序的比较函数?

arrays - 在动态多维数组中搜索、排序、匹配 - VBA

java - 从数组中删除零值

algorithm - 了解 Big Oh Careercup 破解编码面试

c++ - C/C++ Wavelet 库,非 GPL

algorithm - 连接 PCM 文件的算法是什么?

arrays - Typescript - 具有不同返回值的动态 promise 数组