2017-03-06 104 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)內存。

相關問題