2017-03-06 67 views
1

这是“编程面试元素”中的一个问题。我看到这个问题here,但接受的答案(或其他答案)不完整。给定一个整数数组,每个数字出现三次,除了一个数字出现两次,找到两次出现的数字?

使用类似于XOR的操作对基本3系统(在文章中称为xor3)起作用,得到的结果是x xor3 x。但是,问题是得到xxor3被定义为加法模3(其中数字以基3系统表示)

如何获得x xor3 x中的x部分?

回答

1

如果再次检查一系列数字,该怎么办?假设您在第一次迭代后获得的值为a = x xor3 x

遍历数组中的所有条目,并且xor3每个值都与a一起使用。

for y in arr: 
    if y xor3 a == 0: 
     print y 
     break 
    else 
     continue 

现在我认为这是一个天真的解决方案。这仍然是O(n)考虑每个xor3为O(1)与O(1)内存。

相关问题