找单独的数 | 豆包MarsCode AI刷题

47 阅读1分钟

image.png

解题思路

看到这道题目,我的第一反应就是使用集合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()

运行截图

image.png

AI思路

我想看看是不是MarsCode的思路和我差不多,结果人家好像比我的更加精悍,直接用上了位运算😂

def solution(inp):
    result = 0
    for num in inp:
        result ^= num  # 对所有数字进行异或运算
    return result

异或运算:异或运算有一个重要的性质:a ^ a = 0 和 a ^ 0 = a。这意味着,如果我们对列表中的所有数字进行异或运算,出现两次的数字会相互抵消,最终剩下的就是唯一出现一次的数字。

真是不服不行!我不禁又开始为码农的未来担忧了🤦‍♂️