只出現一次的數字20210202

2021-10-18 19:23:28 字數 719 閱讀 3608

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

說明:

示例 1:

輸入:[2

,2,1

]輸出:

1

示例 2:

輸入:[4

,1,2

,1,2

]輸出:

4

主要思路:如果不考慮時間複雜度和空間複雜度,則可以使用暴力解決,即雙重遍歷;也可以使用hashmap額外的空間解決;要滿足線性空間和不使用額外的空間,必須單迴圈;

根據題目給出的資訊,陣列內除了某元素為乙個,其他元素都成對出現,要找出這個元素,那麼想辦法把成對的元素消滅掉;此時可以想到異或運算。

時間複雜度:o(n) n為資料的長度

空間複雜度:o(1) int型別的記憶體空間

public

intsinglenumber

(int

nums)

return number;

}

異或運算的特點:

異或運算的使用場景:

a = a^b;

b = b^a;

a = a^b;

return

(a^b)

==0

只出現一次的數字

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...