c++ - 我们能否使用位操作来确定 0 在数组中是否出现奇数次

标签 c++ c arrays bit-manipulation xor

我知道,对包含除 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)-> 您的单个元素为零。

这是如何check if an integer is even or odd in C / C++

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

相关文章:

c++ - 从文件中读取并保存到数组c++

c++ - 使用 '?' 而不是 L' 有什么缺点吗?用wchar_t?

c - 在 C 中使用 fork()

c - 用于 C 语言并行编程的 Microsoft API

php - 对多维数组使用 array_search

ios - 将字节数组代码从 c 转换为 swift

java - 使用给定的 JUNIT 测试查找数组中最接近平均值的值 ~

c++ - ptmconvert (C/C++) 中的编译器错误

c++ - 二进制表达式的无效操作数(C++ 运算符重载)

c++ - 如何在我的本地 apache 服务器上显示我的 Wt 应用程序?