给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次或两次以上。 找出只出现一次的那两个元素。你可以按任意顺序返回答案
时间: 2024-01-30 14:09:38 浏览: 91
# 在一个数组中除了一个数字只出现1次外,其他均出现2次,求这个数字
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次或两次以上。要找出只出现一次的那两个元素,可以使用异或运算。首先将所有元素进行异或运算,得到的结果是两个只出现一次的元素的异或结果。然后根据异或结果的二进制表示中的任意一位,将原数组中的元素分成两组,分别对这两组元素进行异或运算,得到的结果就是两个只出现一次的元素。
具体步骤如下:
1. 对整个数组进行异或运算,得到两个只出现一次的元素的异或结果。
2. 找到异或结果中任意一位为1的位置,记为k。
3. 根据第k位是否为1,将原数组中的元素分成两组,分别对这两组元素进行异或运算,得到的结果就是两个只出现一次的元素。
代码如下(Python):
```python
class Solution:
def singleNumber(self, nums: List[int]) -> List[int]:
xor = 0
for num in nums:
xor ^= num
k = 0
while xor & (1 << k) == 0:
k += 1
a, b = 0, 0
for num in nums:
if num & (1 << k):
a ^= num
else:
b ^= num
return [a, b]
```
阅读全文