137. 只出现一次的数字 II

https://leetcode-cn.com/problems/single-number-ii/submissions/

解法一:

设计很巧秒,初始a=0, b=0。

主要是使得第一次运算后,a=x,b=0;第二次a=0,b=x;第三次a=0,b=0……如此循环

相比于136,使用两个辅助变量a,b(而不是单一变量)来运算,ab的组合就有四种状态。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        a, b = 0, 0
        for num in nums:
            a = (a ^ num) & ~b
            b = (b ^ num) & ~a
        return a

最后更新于