class Solution:
def singleNumbers(self, nums: List[int]) -> List[int]:
k = 0
for n in nums:
k ^= n
mask = 1
while (k & mask==0):
mask <<= 1
a, b = 0, 0
for n in nums:
if n & mask == 0:
a ^= n
else:
b ^= n
return [a, b]
- 异或运算:a^a=0,因此全部元素异或一遍,最后的结果就是只出现一次的元素
class Solution:
def singleNumber(self, nums: List[int]) -> int:
ans = 0
for num in nums:
ans ^= num
return ans
- 位运算: