136 只出現一次的數字

2021-10-22 04:01:26 字數 542 閱讀 6251

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

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

示例 1:

輸入: [2,2,1]

輸出: 1

看到這個題目,很容易想到建立乙個頻次陣列,記錄出現的次數,為1的找出來,但是題目不允許額外空間。

這裡提供一種新思路,位運算-異或,只要題目說不占用額外記憶體就要警惕。

// 異或 ⊕ 的特性

// 0 異或 x = x

// b 異或 b = 0
**:

class

solution

return nums[0]

;}};

大家可能對這個不太懂

假設陣列中有 2m+1個數,其中有 m 個數各出現兩次,乙個數出現 1次,

異或滿**換律和結合律,只要我們全部異或,通過交換結合律,那些相同的數字結果為0,0和第m+1個數異或,結果就是這個數。

136 只出現一次的數字

一.題目 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1示例 2 輸入 4,1,2,1,2 輸出 4二.思路及 法1.使用hash tab...

136 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 異或運算滿足交換律,如a b c等同於c b...

136 只出現一次的數字

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