python實現只出現一次的數字

2021-10-12 10:35:31 字數 2157 閱讀 5057

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

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

示例 1:

輸入: [2,2,1] 輸出: 1 示例 2:

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

(1):將list排序,兩兩一組比較,若不相等,則返回第乙個數字;否則就返回最後乙個數字;

(2):將list按奇數偶數字置拆分成兩個set求差集,則差集中值就是最終的結果。

# -*- coding: utf-8 -*-

'''問題簡述:

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

找出那個只出現一次的元素。

基本思路:

將陣列排序,兩兩一對元素肯定相等,若不相等,則返回第乙個不相等元素;

或者最後乙個元素就是只出現一次的數字。

'''class

solution()

:'''

input: list

output: int

'''defsinglenumber

(self,nums)

: nums.sort(

)# 排序

iflen

(nums)==1

:# 若僅包含乙個元素,則一定是僅出現一次的元素

return nums[0]

i=0while i<

len(nums)-2

:# 假設len(nums) = 5,那麼最後一組下標為2就該停止,所以i=0,2,故 i< 5-2=3即可。

if nums[i]

!= nums[i+1]

:return nums[i]

else

: i = i+

2return nums[-1

]# 假若沒找到,則最後乙個元素就是不重複元素。

if __name__ ==

'__main__'

: ilist =[4

,1,2

,3,1

,2,3

] solu = solution(

) res = solu.singlenumber(ilist)

print

('單個數字為:\n'

,res)

# -*- coding: utf-8 -*-

'''問題簡述:

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

找出那個只出現一次的元素。

基本思路:

給陣列排序,按照奇數偶數將list分成兩個集合,之後求兩個集合的差集就是孤零零的元素。

'''class

solution()

:'''

input: list

output: int

'''defsinglenumber

(self,nums)

: nums.sort(

)# 排序

res =

list

(set

(nums[::

2])-

set(nums[1:

:2])

)return res[0]

if __name__ ==

'__main__'

: ilist =[4

,1,2

,3,1

,2,3

] solu = solution(

) res = solu.singlenumber(ilist)

print

('單個數字為:\n'

,res)

a. 在第一種方法中:注意list長度為1的特殊情況;i下標索引的範圍ib. 在集合中,不能通過集合進行索引,即set[i]。這種索引方式是錯誤的。因此集合是無序的,不能索引。報錯資訊為:typeerror: 『set』 object is not subscriptable。即型別錯誤,不能出現索引。只能通過list()方法將其轉化成列表才可進行索引。

只出現一次的數

給定乙個整數陣列 nums,其中恰好有兩個元素只出現一次,其他所有元素均出現兩次。找出只出現一次的那兩個元素。示例 給定 nums 1,2,1,3,2,5 返回 3,5 注意 結果的順序並不重要,對於上面的例子 5,3 也是正確答案。你的演算法應該具有線性複雜度,你能否僅使用恆定的空間複雜度來實現它...

只出現一次的數

問題描述 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。解決思路 將陣列中元素全部異或,根據異或特點,出現兩次的元素異或後結果為0,陣列全部異或之後的結果就是只出現一次的那個元素。實現 int singlenumber vector int n...

只出現一次的數

問題 有n個數,其中只有乙個數出現一次,其他的都出現兩次,求這個數 空間複雜度為常數 全部xor起來即可 include includeusing namespace std int main printf d n xor sum return 0 1231 3 1 51 2 3 2 3 inclu...