找到三个唯一的数字,其出现次数是偶数

时间:2014-11-24 14:14:57

标签: algorithm logic xor bits

给出整数数组。在该数组中,3个唯一数字的出现次数为偶数。休息只有一次。有没有办法使用XOR逻辑找到这些数字。给定的数组也是n + 3个元素。数组的所有元素都在1到n的范围内。

例如:arr = {4,2,4,5,2,3,1,5},其中n = 5 这里偶数出现的唯一数字是2,4和5

我做了数组的XOR以及范围1到n的xor。这给出了一个数字,它是最后三个唯一数字的XOR的答案。如果有两个数字,我们可以检查设置位并继续查找数字。但是三个数字呢?有没有办法做到这一点。

我知道哈希可以用来解决问题。我正在寻找XOR方法来解决问题。

1 个答案:

答案 0 :(得分:-1)

Xor可以帮助你,因为:

XOR (Exclusive Or) truth table:
           A    B   XOR
           0    0    0
           1    0    1
           0    1    1
           1    1    0 

所以你可以做的是:

A. Divide the elements that are occurring more than ones to sets
   of the same value 
B. Then xor all elements in each of those sets
C. If the result is zero than you can return that element to the end set

如果只需要3个数字而不是前一个数字大小为3,则可以返回它,但您可以使用此逻辑计算组中任意偶数个元素。