因为XOR和AND都是位操作,我们其实可以只关注每个bit的变化。假设第i个bit位上,我们求某个a与所有b1,b2,...bn的配对,即a&b1 ^ a&b2 ^ a&b3 ^ ... a&bn
。如果a为0,那么答案就是0;如果a为1,那么答案就是b1 ^ b2 ^ b3 ^ ... bn
,结果就是数这些bi里面有几个1. 如果有奇数个1,那么答案就是1;如果是偶数个,那么答案就是0.
对于所有的a,{b1,b2,...,bn}都是共享的,所以将上述的过程重复n遍即可。总的时间复杂度就是o(N)。