问题描述:
给定一个数组 a[] ,其中除了2个数字,其他均出现两次,请找到不重复的两个数字并返回。
问题示例:
输入 a=[1,2,5,5,6,6],返回[1,2],输入a=[3,2,7,5,5,7],返回[2,3]
"""
问题描述:
给定一个数组 a[] ,其中除了2个数字,其他均出现两次,请找到不重复的两个数字并返回。
问题示例:
输入 a=[1,2,5,5,6,6],返回[1,2],输入a=[3,2,7,5,5,7],返回[2,3]
"""
#代码实现:
#方法一、
class Two_num:
def __init__(self,a):
self.p = []
self.a = a
self.c = []
for k in self.a:
self.c.append(k)
def for_num(self):
for i in self.a:
t = 0
self.c.remove(i)
for j in self.c:
if j == i:
break
else:
t += 1
if t == len(self.c):
self.p.append(i)
self.c.append(i)
return self.p
"""
a = [1,2,4,5,5,6,6,1]
print("输入:",a)
two_num = Two_num(a)
print("输出:",two_num.for_num())
"""
#方法二
#参数arr:输入待查数组
#返回值:查找后的列表
class Solution:
def theTwoNumbers(self,a):
ans = [0,0]
for i in a:
ans[0] = ans[0] ^ i
c = 1
while c & ans[0] != c:
c = c << 1
for i in a:
if i & c == c:
ans[1] = ans[1] ^ i
ans[0] = ans[0] ^ ans[1]
return ans
if __name__ == "__main__":
arr = [1,2,5,1]
solution = Solution()
print("数组:",arr)
print("输出:",solution.theTwoNumbers(arr))
结果: