我知道,对一个整数数组的所有元素进行异或运算,除1个元素出现偶数次外,其他所有元素的奇数次。



{1,1,2,2,3}
1 ^ 1 ^ 2 ^ 2 ^ 3 = 3;

^是XOR

如果出现奇数的次数是0怎么办?
{1,1,2,2,0}

1 ^ 1 ^ 2 ^ 2 ^ 0 = 0    // Both give
1 ^ 1 ^ 2 ^ 2 = 0        // same answer


如何确认0正在发生奇数次
PS:首选答案代码在C / C ++中

最佳答案

我们称N为数组中元素的数量:


如果(N是偶数)AND(对所有元素进行异或== 0)->所有元素出现偶数次
如果(N为奇数)AND(对所有元素进行异或== 0)->您的单个​​元素为零。


这是check if an integer is even or odd in C / C++的方法

关于c++ - 我们可以使用位操作找到数组中是否发生0次奇数次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47952090/

10-11 21:22