LeetCode演算法題136 只出現一次的數字解析

2021-09-30 16:28:02 字數 772 閱讀 7367

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

說明:

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

示例1:

輸入: [2,2,1]

輸出: 1

示例2:

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

輸出: 4

這個題首先可以想到使用棧,因為之前括號匹配題和這個相當像,用棧去匹配相同元素,最後沒有匹配到的就返回。這是乙個思路,但是只能減小一般的空間。最牛的方法是使用異或運算,可以這麼想,異或運算具有交換律和結合率的性質,因此可以想象先把陣列中的相同數字進行異或,那麼結果一定為0,最後異或那個唯一的數字,其結果就是它。所以只要將陣列中的所有數字進行異或,那麼結果一定是沒有成對的那個數字。

c++源**:

class

solution

};

python3源**:

class

solution

:def

singlenumber

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""b =

0for i in nums:

b = b ^ i

return b

leetcode演算法 136 只出現一次的數字

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

LeetCode 第136題 只出現一次的數

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

LeetCode136題 只出現一次的數字

給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?根據題目描述,由於加上了時間複雜度必須是o n 並且空間複雜度為o 1 的條件,因此不能用排序方法,也不能使用map資料結構。func...