LeetCode 只出現一次的數字

2021-10-13 16:18:48 字數 918 閱讀 2017

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

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

示例 1:

輸入: [2,2,1]

輸出: 1

示例 2:

輸入: [4,1,2,1,2]

輸出: 4

異或運算

參考:官方題解

對於這道題,可使用異或運算 ⊕

\oplus

⊕。異或運算有以下三個性質:

任何數和 00 做異或運算,結果仍然是原來的數,即 a⊕0

a \oplus 0

a⊕0=a。

任何數和其自身做異或運算,結果是 00,即 a⊕a

a \oplus a

a⊕a=0。

異或運算滿**換律和結合律,即 a⊕b

⊕a

a \oplus b \oplus a

a⊕b⊕a=b⊕a

⊕a

b \oplus a \oplus a

b⊕a⊕a=b⊕(

a⊕a)

b \oplus (a \oplus a)

b⊕(a⊕a

)=b⊕

0b \oplus0

b⊕0=b。

class

solution

return single;

}}

排序

class

solution

return nums[nums.length -1]

;}}

只出現一次的數

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...

只出現一次的數

問題描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。解決思路 將陣列中元素全部異或,根據異或特點,出現兩次的元素異或後結果為0,陣列全部異或之後的結果就是只出現一次的那個元素。實現 int singlenumber vector int n...

只出現一次的數

問題 有n個數,其中只有乙個數出現一次,其他的都出現兩次,求這個數 空間複雜度為常數 全部xor起來即可 include includeusing namespace std int main printf d n xor sum return 0 1231 3 1 51 2 3 2 3 inclu...