ami*_*mit 10
首先 - 请注意a xor a == 0,每个a.
假设你有两个独特的数字 - x,y.
如果你对每个元素执行xor,你最终会得到一个数字,它等于x xor y(因为每个数字对都使自己无效),并且至少有一个"up"位.选择这一位(如果有多于一个,你可以选择哪一位),并将列表分成两个子列表:
(1)所有设置了该位的数字.
(2)所有未设置此位的数字.
其中一个唯一的数字有这个位,另一个没有(否则 - 它首先不是"向上"),所以你在每个列表中有一个唯一的数字.
再次迭代每个列表,并对所有元素执行xor,结果是此列表中的唯一编号,因为每个重复对都会使其自身无效.