只出現一次的數字

2021-10-06 03:09:51 字數 534 閱讀 8103

leetcode.136

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

如果沒有說明限制,有很多種方法可以解題:

1.使用集合記錄資料,因為集合的性質不會新增兩個同樣的元素。故得到的集合的和的二倍即為原陣列和+result。

2.採用hash表儲存每個數字和其出現的次數,儲存後遍歷即可。

3.增加乙個狀態陣列用來存放已遍歷的數字。

……而在說明的限制下,需要考慮採用新的方法——異或運算。

已知:a ⊕ a = 0; 0 ⊕ a = a

可推得:a[0] ⊕ a[1] …… ⊕ a[n] = a1 ⊕ a1 ⊕ a2 ⊕ a2 ⊕ …⊕ res ⊕… ⊕ an ⊕ an = res

題目答案可得。

class solution 

return res;

}}

還是要多注意用到位運算的題啊。

只出現一次的數字

1.乙個整型陣列,有乙個數字出現一次,其餘數字出現兩次,找出這個只出現一次的數字。解題思路 異或運算性質 兩個相同的數字異或得0,0與乙個數字異或得數字本身,而且異或運算是滿足交換律的 陣列元素按位異或,交換律可以想象成相同的數字參與運算的時候是相鄰的 所有出現兩次的數字異或之後得0,最後剩餘的是0...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4核心思想 對list排序,然後遍歷 class ...

只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素 例 1,2,2 1 方法一 異或 數字1 數字2 每一位如果相同就為0,不同為1 1 1 0 1 0 1 0 1 1 0 0 0 class solution def singlenumber se...