使用XOR在Python中查找数组中缺少的数字

时间:2019-07-14 12:05:47

标签: python arrays series xor

以下代码运行良好,并使用XOR查找缺少的连续数组数。 我想问为什么第一个循环从cell.label.isUserInteractionEnabled = true 开始并在1结束,第二个循环从n开始并在2结束?

n+2

1 个答案:

答案 0 :(得分:2)

范围不是从0开始的事实是由于您将x1x2初始化为数组的第一个值。

您可以使用0x1, x2 = 0开始,就像这样:

a = [1, 2, 3, 4, 5, 6, 8]
n = len(a)
x1 = 0
x2 = 0
for i in range(0, n):
    x1 = x1 ^ a[i]
for i in range(0, n + 2):
    x2 = x2 ^ i
print(x1 ^ x2) # still prints 7

您一直到n+2的事实(实际上是n+1的最后一步,因为末尾不包含在内)是因为数组缺少元素,所以在您的情况下,{{ 1}}是n+1,而没有将其与8进行XOR运算,您将得到错误的值(在这种情况下,x2,即15)。 / p>

要澄清:您必须将实际值与期望值进行异或运算,以找到缺失的值。

第一个范围适用于所有实际值,而第二个范围适用于所有可能的值,最高为7^8