思路:
依旧是套弄二进制位运算的应用:二进制数表示三个状态时,可调用三个变量来存储
又因为^(异或)和 &(与)运算时有:
x^0=x x^1=~x
x&0=0 x&1=x
因此更改状态可以利用这两个关系
from typing import List
class Solution:
def single(self,nums:List[int])->List[int]:
ones,twos=0,0
for num in nums:
'''ones与num进行异或操作,当num为零时,ones^num也为0,然后再与twos的取反数进行与操作'''
ones=ones^num & ~twos
twos=twos^num & ~ones
return ones