# way 0 class Solution: def FindNumsAppearOnce(self , array ): # write code here # 如果两个数相同,那么这两个数的异或操作为零 if len(array) < 2: return None twoNumXor = None for num in array: if twoNumXor == None: twoNumXor = num else: twoNumXor = twoNumXor ^ num count = 0 while twoNumXor % 2 == 0: twoNumXor = twoNumXor >> 1 count += 1 mask = 1 << count firstNum = None secondNum = None for num in array: if mask & num == 0: if firstNum == None: firstNum = num else: firstNum = firstNum ^ num else: if secondNum == None: secondNum = num else: secondNum = secondNum ^ num if firstNum > secondNum: firstNum, secondNum = secondNum, firstNum return firstNum, secondNum # way 1 class Solution: def FindNumsAppearOnce(self , array ): # write code here findarray = [] findarray.append(array[0]) lenarray = len(array) for i in range(1, lenarray): if array[i] in findarray: findarray.remove(array[i]) else: findarray.append(array[i]) findarray.sort() return findarray