^ 表示异或
nums[0] ^ nums[1] ^ nums[2]
。建立了 pre 数组之后,我们就可以使用如下方式计算,而不是类似nums[0] ^ nums[1] ^ nums[2]
的区间遍历形式。x ^ y ^ x = y
。用自然语言来说就是异或一组数字,两两相同的会抵消,而上面的除了区间[Li,Ri]内的数,其他数都出现了两次,因此会被抵消。这样就达到了我们的目的。之所以是 pre[Li] ^ pre[Ri + 1],而不是 pre[Li - 1] ^ pre[Ri] 是因为 pre 中我使用了一个虚拟数字 0,如果你没有用到这个,则需要代码有所调整。