【題目】:陣列中只有乙個數字出現過一次,其他的數字出現過三次。求出出現過一次的那個數字。
用異或處理呢?其實,我們要通過問題看本質,上一道題為什麼可以用異或呢?其實我們是把數字變成二進位制來進行的
思考。用異或是因為其他數字出現過兩次這個特性決定的,而在本題其他數字是出現了三次。從而,我們再重新分析發現,
數字轉化成二進位制,出現過三次的數字的和,在二進位制的每一位都是可以被三整除的。這樣再加上那個只出現過一次的數,
對二進位制的每一位對三求餘,得到的數字就是我們要求的了。
《劍指Offer》面試題 陣列中只出現一次的數字
題目描述 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。思路根據異或去重的原理,我們知道如果只有乙個只出現一次的數字的求法,但這裡是有兩個只出現一次的數字,我們便要想辦法把他分為兩個子陣列,每個子陣列中包含乙個只出現一次的數字,其他的數字都出現了兩次。劍...
經典面試題之尋找一組數中只出現一次的兩個數
這個面試題是非常經典的,辦法有很多,最笨的辦法就是乙個乙個找,但是這樣的話計算機太累,時間複雜度,空間複雜度也比較高,所以我這裡給出一種簡單的方法,這方法主要用到了 異或運算 首先介紹一下異或運算 相同為零,不同為一,所以當兩個數 不同時異或 結果不為0 當兩個數 相同時異或 結果為0 任何數 異或...
面試題37 陣列中只出現一次的數字
題目 整型陣列中除了兩個數字之外,其他的數字都出現兩次,找出這兩個只出現一次的數字 思路 利用異或運算的性質 任何乙個數字異或自己都等於0 1.從頭到尾依次異或陣列中的每個數字,最終得到的結果就是兩個只出現一次的數字的異或結果 2.異或結果的二進位制表示中至少有一位為1,找到結果數字中第乙個為1的位...