包含n-2个整数的数组1到n,O(n)算法找到缺少2个数字的O(1)额外空间?

时间:2012-10-05 04:12:16

标签: arrays algorithm sorting

  

可能重复:
  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?

1 个答案:

答案 0 :(得分:3)

这是一个想法:只需保留一些统计信息,为您提供有关缺失数字的信息。例如,如果您将所有数字的总和计算为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。

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