只出現一次的數字

2021-09-01 00:00:08 字數 974 閱讀 5290

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

例:[1,2,2] —> 1

# 方法一  

"""異或

數字1 ^ 數字2 - 每一位如果相同就為0,不同為1

1 ^ 1 - 0

1 ^ 0 - 1

0 ^ 1 - 1

0 ^ 0 - 0

"""class

solution

:def

singlenumber

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""nums1 =

0for i in nums:

nums1 ^

= i return nums1

# 方法二 通過求和

class

solution

:def

singlenumber

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""return

sum(

set(nums))*

2-sum(nums)

# 方法三 領扣中可能會超時

class

solution

:def

singlenumber

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""for i in nums:

if nums.count(i)==1

:print

(i)

只出現一次的數字

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

只出現一次的數字

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

只出現一次的數字

題目描述 線性的時間複雜度,即為o n 不使用額外輔助空間,即空間複雜度為o 1 異或運算 針對二進位制而言的,如果是十進位制,需要先轉化為二進位制,然後再進行運算,相同為0,不同為1 如果十進位制相同,二進位制必然也相同,0跟任何數異或運算,結果為那個數本身,題目中說除了某個元素只出現一次以外,其...