题目:
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
思路一:
哈希表
代码:
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
dic = {}
for i in array:
if i in dic: dic[i] += 1
else: dic[i] = 1
res = []
for i in dic:
if dic[i] == 1: res.append(i)
return res
思路二:
异或法
代码:
class Solution:
# 返回[a,b] 其中ab是出现一次的两个数字
def FindNumsAppearOnce(self, array):
num = 0
for i in array: num = num^i
j = 1
while num&j != j: j <<= 1
arr1, arr2 = [], []
for i in array:
if i&j == 0: arr1.append(i)
else: arr2.append(i)
a, b = 0, 0
for i in arr1: a = a^i
for i in arr2: b = b^i
return [a, b]