解题思路
看到这道题目,我的第一反应就是使用集合set,利用set里每个元素只出现一次的特性,删去重复出现的元素,最后留下的元素即为所求
完整代码
def solution(inp):
# Edit your code here
s=set([])
for x in inp:
if x in s:
s.remove(x)
else:
s.add(x)
return s.pop()
运行截图
AI思路
我想看看是不是MarsCode的思路和我差不多,结果人家好像比我的更加精悍,直接用上了位运算😂
def solution(inp):
result = 0
for num in inp:
result ^= num # 对所有数字进行异或运算
return result
异或运算:异或运算有一个重要的性质:a ^ a = 0 和 a ^ 0 = a。这意味着,如果我们对列表中的所有数字进行异或运算,出现两次的数字会相互抵消,最终剩下的就是唯一出现一次的数字。
真是不服不行!我不禁又开始为码农的未来担忧了🤦♂️