問題:給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
思路:1.使用集合儲存數字,存在就刪除,不存在就加入,最後剩下的就是結果。
2.使用集合儲存陣列(無重複),計算集合元素的和再乘以二,減去陣列元素和就是結果。
3.雜湊表對映陣列出現次數,然後遍歷。
4.使用異或運算,超強的:
異或運算的性質:
·任何數和 0 做異或運算,結果仍然是原來的數,即 a⊕0 = a。
·任何數和其自身做異或運算,結果是 0,即 a⊕a = 0。
·異或運算滿**換律和結合律,即a⊕b⊕a = b⊕a⊕a = b⊕(a⊕a) = b⊕0 = b
也就是說,題設陣列中所有重複出現兩次的陣列都可以互相異或得0,0與0異或也是0,最後0和只出現一次的數字異或得它本身,也就是結果,**實現:
class
solution
}
演算法 只出現一次的數字
1.leetcode136 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。要求時間複雜度o n 空間複雜度o 1 示例 輸入 4,1,2,1,2 輸出4 1 面試官不想要的答案 建字典 排序。2 面試官想要的答案 位運算。思路 如果我們對 0 ...
只出現一次的數字
1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...
只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...