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)內存。