演算法大神左神1
阿新 • • 發佈:2021-09-16
題目:
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