劍指offer_陣列中只出現一次的數字
題目描述
一個整型數組裡除了兩個數字之外,其他的數字都出現了偶數次。請寫程式找出這兩個只出現一次的數字。
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出現一次的兩個數字
def FindNumsAppearOnce(self, array):
# write code here
hashmap={}
for i in array:
if i in hashmap:
hashmap[i]+=1
else:
hashmap[i]=1
res=[]
for k in hashmap.keys():
if hashmap[k]==1:
res.append(k)
return res
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出現一次的兩個數字
def FindNumsAppearOnce(self, array):
# write code here
tmp=[]
for i in array:
if i in tmp:
tmp.remove(i)
else:
tmp.append(i)
return tmp
# -*- coding:utf-8 -*-
class Solution:
# 返回[a,b] 其中ab是出現一次的兩個數字
def FindNumsAppearOnce(self, array):
# write code here
if not array:
return []
tmp=0
for i in array:
tmp^=i
idx=0
while(tmp&1)==0:
tmp>>=1
idx+=1
a=b=0
for i in array:
if self.isbit(i,idx):
a^=i
else:
b^=i
return [a,b]
def isbit(self,num,index):
num=num>>index
return (num&1)