我们可以使用位操作找到数组中是否出现奇数次数

问题描述 投票:-1回答:1

我知道,对整数数组的所有元素进行异或,其中包含除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 ++

c++ c arrays bit-manipulation xor
1个回答
2
投票

让我们调用N,即数组中元素的数量:

  • 如果(N是偶数)AND(对所有元素进行异或= 0) - >所有元素偶数次出现
  • if(N为奇数)AND(XORing all elements == 0) - >单个元素为零。

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

© www.soinside.com 2019 - 2024. All rights reserved.