以下代码运行良好,并使用XOR查找缺少的连续数组数。
我想问为什么第一个循环从cell.label.isUserInteractionEnabled = true
开始并在1
结束,第二个循环从n
开始并在2
结束?
n+2
答案 0 :(得分:2)
范围不是从0
开始的事实是由于您将x1
和x2
初始化为数组的第一个值。
您可以使用0
从x1, 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
。