面試題40 陣列中只出現一次的數字

2022-04-28 19:00:10 字數 385 閱讀 4757

題目:乙個整形陣列裡除了兩個數字之外,其他的數字都出現了兩次。找出這兩個只出現一次的數字。要求時間複雜度為o(n),空間複雜度為o(1)。

分析:利用異或運算可以求出乙個整形陣列裡唯一乙個只出現一次的數字。因此,如果能將本題的陣列分成兩個部分,使得每個部分只包含乙個只出現一次的數字,便可以求得本題的解。通過從頭到尾依次異或陣列中的每乙個數字,最終得到的結果為兩個只出現一次的數字異或得到的結果。由於這兩個數字一定不同,因此其異或得到的結果中必定至少有一位為1。假設第n位為1,那麼就可以根據第n位是否為1將原陣列分成兩個部分。

result.push_back(result1);

result.push_back(result2);

return

result;

}

面試題40 陣列中只出現一次的數字

參考 1.2.題目 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 需要用到的知識 位運算的異或操作 1.按位異或運算定義 1 1 0 1 0 1 0 1 1 0 0 0 2.規律 定理一a b b a 定理二 ...

面試題40 陣列中只出現一次的數字

題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。解題思路 若是陣列中只有乙個數字出現一次,其餘的數字都出現偶數次,那麼直接將陣列中所有的數進行異或運算,得到的最後的結果就是出現一次的數 出現奇數次的數字 但是,題目要求是有兩個數出現一次,那麼上述...

面試題40 陣列中只出現一次的數字

題目 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。這其實是除了有乙個數字外,其它數字都出現兩次的變種。只有乙個數字不同的時候,可以採用異或來做。但此處是兩個不同。書上給出的方法是先異或,得到結果值。然後在結果中,從右往左找到第一位是1的位號。由此考慮將...