在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
#最直观的思路
class Solution:
def singleNumber(self, nums: List[int]) -> int:
# val = {}
# for i in nums:
# if i not in val:
# val[i] = 0
# val[i] += 1
# for i in val:
# if val[i] == 1:
# return i
#二进制计数法
res = [0] * 32
ans = 0
for i in range(len(nums)):
for j in range(32):
res[j] += 1 & (nums[i] >> j)
for i in range(len(res)):
if res[i] % 3 != 0:
ans += pow(2, i)
return ans