classSolution:defsingleNumber(self,nums: List[int]) ->int: cnt = [0] *32for i inrange(32):for x in nums:if x & (1<< i): cnt[i]+=1 ret =0for i, n inenumerate(cnt):if n %3: ret +=2** ireturn ret
classSolution:defsingleNumber(self,nums: List[int]) ->int: cnt = [0] *32for i inrange(32):for x in nums:if x & (1<< i): cnt[i]+=1 ret =0for i, n inenumerate(cnt):if n %3: ret +=2** iif cnt[31]%3==0:# 最高位是 0 为正数return retelse:return~(ret ^0xffffffff) # 这一步的操作实际上就是讲 ret 二进制表示中 32位以上的部分都置为 0