力扣3158.求出出现两次数字的XOR值 python
给你一个数组 nums
,数组中的数字 要么 出现一次,要么 出现两次。
请你返回数组中所有出现两次数字的按位 XOR
值,如果没有数字出现过两次,返回 0 。
示例 1:
输入:nums = [1,2,1,3]
输出:1
解释:
nums
中唯一出现过两次的数字是 1 。
示例 2:
输入:nums = [1,2,3]
输出:0
解释:
nums
中没有数字出现两次。
示例 3:
输入:nums = [1,2,2,1]
输出:3
解释:
数字 1 和 2 出现过两次。1 XOR 2 == 3
。
from typing import List
class Solution:
def duplicateNumbersXOR(self, nums: List[int]) -> int:
time = 0 # 用于记录数字是否已经见过
ans = 0 # 用于记录重复出现的数字
for a in nums:
# 如果当前数字的状态已经被记录过,则说明这是一个重复数字
if time >> a & 1: #返回1就是属于,返回0不属于
ans ^= a #因为ans本身为零!
else:
# 将当前数字记录到 time 中
time |= 1 << a
return ans