算法1
Set 和 List 的使用
考虑到set能够去掉所有重复元素,将nums的所有包含元素和原有数组一一对应,打了两个补丁,终于AC
代码
if len(nums) == 2:#补丁一
return nums
nums = sorted(nums)
res = []
n = len(nums)
j = 0
s = set(nums)#得到不重复的数列
s = list(s)
for i in range(n-1):
if nums[i] == nums[i+1] and nums[i] == s[j]:
j += 1
continue
elif nums[i] != nums[i+1] and nums[i] == s[j]:
res.append(s[j])
j += 1
if len(res) == 1:#补丁二
res.append(nums[-1])
return res
算法2
异或法
代码
xor = 0
for i in nums:
xor ^= i
num1, num2 = 0, 0
mask = 1
while xor & mask == 0:
mask <<= 1
for num in nums:
if num & mask == 0:
num1 ^= num
else:
num2 ^= num
return [num1, num2]