260. 只出现一次的数字 III

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

class Solution:
    def singleNumber(self, nums: List[int]) -> List[int]:
        

        flag = 0
        #这个循环就是让nums里的元素都进行异或,最后得到两个只出现一次的数异或后的结果flag
        for i in nums:
            flag = flag ^ i
        #找到那个flag中从右往左第一次为1的那个二进制的mask        
        mask = 1
        while flag & mask == 0:
            mask = mask << 1
        
        a = 0
        b = 0
        for i in nums:
            #这里让mask和nums里所有的元素进行与操作,要么为0,要么为1
            #让a和要么为0的进行异或找到其中一个只出现一次的数
            #让b和要么为1的进行异或找到其另一个只出现一次的数
            if i & mask == 0:
                a = a ^ i
            else:
                b = b ^ i
        return [a,b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值