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