一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。

示例 1:

输入:nums = [4,1,4,6]
输出:[1,6] 或 [6,1]

示例 2:

输入:nums = [1,2,10,4,1,4,3,3]
输出:[2,10] 或 [10,2]

限制:

  • 2 <= nums.length <= 10000

Python 解答:

class Solution:
    def singleNumbers(self, nums: List[int]) -> List[int]:
        value = 0
        for item in nums:
            value ^= item
        a, b = 0, 0
        flag = 1
        while value > 0:
            if value & 1 == 1:
                break
            else:
                value >>= 1
                flag <<= 1
        for item in nums:
            if item & flag == flag:
                a ^= item
            else:
                b ^= item
        return [a, b]
最后修改日期: 2021年4月14日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。