给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。
示例 :
输入: [1,2,1,3,2,5]
输出: [3,5]
lowbit操作在树状数组中也见过,保留最右边的1,剩余全部变为0。
存在两个数不同,最终异或结果肯定不为0,
from typing import *
class Solution:
def singleNumber(self, nums: List[int]) -> List[int]:
val = 0
for num in nums:
val = val ^ num
lowbit = val & (-val)
val1 = 0
for num in nums:
if num & lowbit:
val1 = val1 ^ num
return [val1, val1 ^ val]