class Solution:
def singleNumber(self, nums: List[int]) -> int:
n = len(nums)
# 使用异或
ans = nums[0]
for i in range(1,n):
ans ^= nums[i]
return ans
class Solution:
def singleNumber(self, nums: List[int]) -> int:
ans = 0
# 展开为二进制,对每一位相加,统计所有1的次数,再%3,每位剩下的数字组成新的数字,就是答案
for i in range(32):
# 0-31
# 右移
# nums[j] 二进制 i 位 上是否是 1
total = sum( (num >> i) & 1 for num in nums)
if total % 3:
# 有余数呗
# Python 这里对于最高位需要特殊判断
if i == 31:
ans -= (1<<i)
else:
ans |= (1<<i)
return ans