我知道,对包含除 1 个出现偶数次的元素之外的所有元素的整数数组的所有元素进行异或,得到出现奇数次的数字。
示例
{ 1, 1, 2, 2, 3 }
1^1^2^2^3=3;
^ 是异或
如果出现奇数次的数字是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)-> 所有元素出现偶数次
- if(N 为奇数)AND(对所有元素进行异或 ==0)-> 您的单个元素为零。
关于c++ - 我们能否使用位操作来确定 0 在数组中是否出现奇数次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47952090/