剑指offer 56. 数组中数字出现的次数
题目:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 中等
方法:异或 时间复杂度O(n) 空间复杂度O(1)
二进制数最右边的一 源码 & 补码(反码 + 1)
def singleNumbers(nums): """ :type nums: List[int] :rtype: List[int] """ x = y = xy = 0 for num in nums: xy ^= num one = xy & (~xy + 1) for num in nums: if num & one: x ^= num y = xy ^ x return x,y
其他方法包括哈希表等不符合条件

浙公网安备 33010602011771号