
class Solution:
def singleNumber(self, nums: List[int]) -> List[int]:
# 所有数异或
x = 0
for i in range(len(nums)):
x = x ^ nums[i]
# 由于两个出现一次的元素不相同,所以至少有一位为1,下面找到最低的那个1
mask = 1
while x & mask == 0:
mask = mask << 1
# 所有书根据mask=1或者0分成两组(两个特殊的数字被分成两组)
a1, a2 = 0, 0
for i in range(len(nums)):
if nums[i] & mask == 0:
a1 = a1 ^ nums[i]
elif nums[i] & mask == mask:
a2 = a2 ^ nums[i]
return [a1,a2]
版权声明:本文为weixin_41362649原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。