136 只出現一次的數字

2021-10-23 05:43:19 字數 1814 閱讀 5355

只出現一次的數字

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

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

1.遍歷兩遍列表

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

dic =

for value in nums:

if value in dic: dic.remove(value)

else

return dic.pop(

)

2.雜湊表的改寫

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

dic =

for i in nums:

if i in dic: dic.pop(i)

else

: dic[i]=1

return dic.popitem()[

0]

4.雜湊表的改進

減少了一次由判斷 if i in dic 產生的遍歷

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

dic =

for i in nums:

try:

dic.pop(i)

except

: dic[i]=1

return dic.popitem()[

0]

4.排序後分塊

間隔為2排序分塊,分別從0,1開始,則不重複元素必定在分塊後多的一組,其他元素與另一分塊相同

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

nums.sort(

) n =

list

(set

(nums[::

2])-

set(nums[1:

:2])

)[0]

return n

5.數學

(1)求和

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

return

sum(

set(nums))*

2-sum(nums)

(2)異或

class

solution

:def

singlenumber

(self, nums: list[

int])-

>

int:

return

reduce

(xor,nums)

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