1. 程式人生 > 其它 >演算法大神左神1

演算法大神左神1

題目:

1、給定一個數組,其中一個數只出現了奇數次,剩餘只出現了偶數次 求出這個出現了奇數次的數

(1)思路

採取異或運算的形式

N ^N = 0 0^N = N

對陣列中的每一個數都進行異或,最終得到的數就是結果

(2)程式碼

2、給定一個數組,其中兩個個數只出現了奇數次,剩餘只出現了偶數次 求出這兩個出現了奇數次的數

(1)思路:

對陣列中的每一個數都進行異或,最終得到的數就是 eor1= a^b ,由於a和b不相等,所以eor的值肯定不等於0

假設eor二進位制的第八位為1,那麼a或者b二進位制的第八位肯定不相同 (一個0,一個1)

讓所有二進位制數第八位是0的進行異或運算,那麼最終得到的eor2不是a就是b

然後讓eor2與eor1進行異或 最終得到另一個數

(2)程式碼

比較難理解的是

rightOne二進位制只有一個最右邊的1 其他都是0