在数组中找到缺少的数字?

时间:2016-12-24 10:03:05

标签: arrays algorithm

我的一位朋友很久以前就问过这个问题。他没有迭代阵列就问我这个问题。我在脑海中找到N数的和,然后从中减去数组的总和。另一个XOR计算。 但是这些解决方案仍然需要迭代阵列。 如果没有迭代数组存在这样的解决方案或算法,我会更加干净。 此外,如果您要将此问题标记为重复,请参阅链接。

3 个答案:

答案 0 :(得分:3)

这个数组中缺少的数字是什么?

1, 2, 3, 4, 5, 6, *

*代表您不允许阅读的数字,否则将是迭代。)

答案 1 :(得分:0)

如果数组中缺少数字,则必须检查它,这意味着数组的迭代。没办法,没有迭代。

答案 2 :(得分:0)

一般情况下,你不能这样做。想象一下,你得到了Yves Daoust的样本:

 [1, 2, 3, 4, 5, 6, ?]

并且您可以阅读数组中的任何项,但最后一项。它是什么?我听到吗?不,这是一个典型的错误解决方案:

item = i + (i-1)*(i-2)*(i-3)*(i-4)*(i-5)*(i-6)*F(i)

其中F(i)是一个任意函数(好吧,不是任意的,但是有一些宽松的限制,但是F(i)不能,比如说1/(i-3))。让

F(i) == 0           -> last item ==   7 
F(i) == 1           -> last item == 727
F(i) == (pi-i)/720  -> last item ==  pi
...

您必须有更多限制,例如数组表示最小可能功率的多项式的值;在这种情况下,解决方案是7