解题思路
计算每个二进制位出现的次数,如果是3的倍数,不用管
否则就是唯一的那个数
137. 只出现一次的数字 II
代码
class Solution:
def singleNumber(self, nums: List[int]) -> int:
rtv = 0
for i in range(32):
test = 1<<i
cnt = sum([1 for n in nums if n & test]) # 所有数的该位统计
# 出现三次的全部被剔除了,如果出现一次的那个该位是0,也不管,是1时把该位补上
if cnt % 3: rtv |= test
return rtv if rtv < 2**31 else rtv - 2**32
![](https://img.haomeiwen.com/i4291429/d721b43d1cd57ece.png)
网友评论