1
这是“编程面试元素”中的一个问题。我看到这个问题here,但接受的答案(或其他答案)不完整。给定一个整数数组,每个数字出现三次,除了一个数字出现两次,找到两次出现的数字?
使用类似于XOR的操作对基本3系统(在文章中称为xor3
)起作用,得到的结果是x xor3 x
。但是,问题是得到x
。 xor3
被定义为加法模3(其中数字以基3系统表示)
如何获得x xor3 x
中的x
部分?
这是“编程面试元素”中的一个问题。我看到这个问题here,但接受的答案(或其他答案)不完整。给定一个整数数组,每个数字出现三次,除了一个数字出现两次,找到两次出现的数字?
使用类似于XOR的操作对基本3系统(在文章中称为xor3
)起作用,得到的结果是x xor3 x
。但是,问题是得到x
。 xor3
被定义为加法模3(其中数字以基3系统表示)
如何获得x xor3 x
中的x
部分?
如果再次检查一系列数字,该怎么办?假设您在第一次迭代后获得的值为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)内存。