概述
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
最后
以上就是单纯板凳为你收集整理的每日一道Leetcode - 136. 只出现一次的数字【异或|位运算】的全部内容,希望文章能够帮你解决每日一道Leetcode - 136. 只出现一次的数字【异或|位运算】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复