[問題
]乙個整數陣列中每個數均出現三次,只有乙個數隻出現一次。找出這個數。
[解析]如果這裡的數不是出現三次而是出現兩次,我們可以使用異或的方式將所有的數進行異或,最後的結果自然是僅出現一次的數。受此啟發,這裡考慮將整數表達成3
進製,每一位的異或操作:
1 xo 0 = 1
2 xo 0 = 2
0 xo 0 = 0
1 x0 1 = 2
1 xo 2 = 0
2 xo 2 = 1
這樣,相同的三個數的同一位的異或值一定為0,0與x
的異或等於
x。通過將所有的數表示成三進製,一起異或,最後的結果為即僅出現一次的數
找出陣列之中只出現一次的數字
個數,n個數出現了偶數次,個數出現了奇數次 這兩個數不相等 問用o 1 的空間複雜度,找出這兩個數,不需要知道具體位置,只需要知道這兩個值。includeusing namespace std 判斷indexbit位上是否為1 bool isbit1 int num,unsigned int ind...
找出陣列中只出現一次的數字
乙個整型陣列裡除了乙個數字以外,其他數字都出現了兩次。找出這個只出現一次的數字 異或運算 任何乙個數字異或它本身都等於0,如果從頭到尾異或陣列中的每乙個數字,那些出現兩次的數字全部在異或中會被抵消,最終的結果剛好是這個只出現一次的數字 package jbarray 找出陣列中只出現一次的數字 au...
找出陣列中只出現一次的數
今天來看一道有意思的題,看起來很簡單,但是要想到滿足要求的答案沒那麼容易。有乙個非空整形陣列,除了有乙個只出現過一次的數,其他的數都出現且只出現過兩次,現要求找出這個只出現過一次的數。時間複雜度不能超過 o n 而且不能使用額外空間。大概意思就是,比如從 5,5,8,8,6,9,9 陣列中找出 6 ...