只出現一次的數字
給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
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...