题目链接:https://leetcode-cn.com/problems/single-number-ii/
难度:中等
描述:
给你一个整数数组 nums
,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
题解
把数组中每个元素的每个位都加起来,再对每个位取mod 3
得到的结果就是答案
class Solution:
def singleNumber(self, nums: List[int]) -> int:
arr = [0] * 32
ret = 0
for num in nums:
for i in range(32):
arr[i] += num & 1
num >>= 1
for i in range(32):
ret <<= 1
ret |= arr[31-i] % 3
# 在python里,防止ret是负数
return ret if arr[31] % 3 == 0 else ~(ret ^ 0xffffffff)