出现了奇数次的数字的算法
生活随笔
收集整理的這篇文章主要介紹了
出现了奇数次的数字的算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一堆數字中,有兩個數字出現了奇數次,其余的數字出現了偶數次,設計一種算法找出這兩個數字。要求時間復雜度為O(n),空間復雜度為O(1)
假設這兩個數為a,b,將數組中所有元素異或結果x=a^b,判斷x中位為1的位數(注:因為a!=b,所以x!=0,我們只需知道某一個位為1的位數k,例如0010 1100,我們可取k=2或者3,或者5),然后將x與數組中第k位為1的數進行異或,異或結果就是a,b中一個,然后用x異或,就可以求出另外一個。
php代碼實現如下:
算法的掃描過程如下圖所示:
轉載于:https://blog.51cto.com/hehe1987/1650971
總結
以上是生活随笔為你收集整理的出现了奇数次的数字的算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell脚本之函数篇
- 下一篇: AutoLayout屏幕适配