#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param nums int整型一维数组
# @return int整型一维数组
#
class Solution:
"""
解题思路:
1.dict() 保存每个数字出现的次数
2.遍历dict() 为1的加入结果中
"""
def FindNumsAppearOnce1(self , nums: List[int]) -> List[int]:
# write code here
res=[]
if not nums or len(nums)==1:
return []
mp=dict()
n=len(nums)
for i in range(n):
if nums[i] not in mp:
mp[nums[i]]=1
else:
mp[nums[i]]+=1
#print(mp)
key_list=mp.keys()
for i in key_list:
if mp[i]==1:
res.append(i)
#print(res)
#res.sort() # 整理次序
if res[0]>res[1]:
temp=res[0]
res[0]=res[1]
res[1]=temp
return res
def FindNumsAppearOnce(self , nums: List[int]) -> List[int]:
# write code here
res=[]
if not nums or len(nums)==1:
return []
temp=0
n=len(nums)
# 遍历整个数组,将每个元素逐个异或运算,得到a异或b
for i in range(n):
temp ^=nums[i]
# ste2: 找到k二进制第一个不相同的位
k=1
while k&temp==0:
k<<=1
#step3 遍历属猪将数组单独做异或运算分别存在res1 res2
# step 4 比较res1和res2 保持递增顺序 返回
res1=0
res2=0
for i in range(n):
if k&nums[i]==0:
res1^=nums[i]
else:
res2^=nums[i]
if res1>res2:
t=res1
res1=res2
res2=t
return [res1,res2]