给定一个整数数组,其中每个数字出现三次,除了一个数字出现两次,找到两次显示的数字?

时间:2017-03-06 19:27:20

标签: arrays duplicates operators bitwise-operators xor

这是#34;编程采访元素的问题"。我看到此问题已发布here但已接受的答案(或其他答案)未完成。

使用适用于基础3系统的XOR操作(在帖子中称为xor3),您将获得x xor3 x的结果。但问题是获得xxor3被定义为加法模3(其中数字在基数3系统中表示)

我们如何从x中获取x xor3 x部分?

1 个答案:

答案 0 :(得分: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)。