陣列中只出現一次的兩個數字 python

2021-09-05 09:57:08 字數 1172 閱讀 3904

題目描述

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。

首先考慮,如果乙個陣列出了乙個數字外,其餘的陣列都出現了偶數次的解法:xor異或方法可以消除偶數出現的數字

將陣列中所有的數字全部異或,得到最後的結果就是出現一次的數字

class

solution

:def

(self, array)

:# write code here

result =

0for i in array:

result = result ^ i

return result

解法1:陣列中出現兩次的數字,可以用字典的演算法:

建立字典的方法:if i not in dic: dic[i] = 1

class

solution

:# 返回[a,b] 其中ab是出現一次的兩個數字

def(self, array)

:# write code here

if array ==

:return

dic =

for i in array:

if i in dic:

dic[i]+=1

else

: dic[i]=1

result =

for j in dic:

if dic[j]==1

:return result

占用記憶體:5728k

解法2:可以採用array.count方法,這樣時間複雜度肯定比較大。

class

solution

:# 返回[a,b] 其中ab是出現一次的兩個數字

def(self, array)

:# write code here

if array ==

:return

result =

for i in array:

if array.count(i)==1

and i not

in result:

return result

占用記憶體:5860k

陣列中只出現一次的兩個數字

乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。你可以假設這兩個數字一定存在。樣例輸入 1,2,3,3,4,4 輸出 1,2 解決方案 異或 兩個相同的元素異或 設出現一次的數字分別為x和y 1,先用乙個sum 將整個陣列遍歷一遍同時異或該陣列元素與sum...

陣列中只出現一次的兩個數字

我們知道如果出現一次的數只有1個,其餘的都出現了兩次,那麼,直接異或一遍就可以了,但是,此題有2個 所以,異或一遍的結果為x y,即出現一次的兩個數異或的結果,從s x y 0,知道s的某位為1,x與y的在s為1的位不一樣,這樣就可以將數分為兩個集合,與s相同位為1的和s相同位為0的,x與y一定在兩...

陣列中只出現一次的兩個數

劍指 offer 56 i.陣列中數字出現的次數 大意 找出陣列中只出現一次的兩個數 其它出現兩次 思路 思路 首先需要知道乙個前置問題 找出陣列中只出現一次的乙個數 其它出現兩次 顯然,對整個陣列進行異或操作即可。那麼,我們是否有可能將本題中的陣列分隔成兩部分呢 不要求連續 答案是肯定的 我們仍然...