leetcode-136. 只出现一次的数字解法
生活随笔
收集整理的這篇文章主要介紹了
leetcode-136. 只出现一次的数字解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素。
說明:
你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎?
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
對于這樣一個問題,我們可以使用一種小技巧,既用異或來解題。
首先我們要了解異或的幾個性質
1.兩個數異或是,二進制位相同取0.不相同取1。
例如:5 和9
5:0101
9:1001
5^9:1100
2.0異或任何數得到的都是那個數
3.任何數異或自己得到的都是0
例如上面的示例,我們可以讓所有數據互相異或,因為除了某個元素外其余均出現兩次,而相同的數字異或得到的為0,0再異或那個只出現一次的數既得到它本身。
如對于示例2
4 ^ 1 ^ 2 ^ 1 ^ 2 = 4 ^ 0 ^ 0 = 4
所以解法如下:
總結
以上是生活随笔為你收集整理的leetcode-136. 只出现一次的数字解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斐波那契数拓展问题:leetcode-7
- 下一篇: leetcode-260.只出现一次的数