lc136.只出现一次的数字

 

题目链接

做jz056I的时候想起来的这个题,这题是其基础。利用异或的性质:1.任何数和0做异或运算,结果仍然是原来的数;2.任何数和其自身做异或运算,结果是0;3.异或运算满足交换律和结合律。算法实现如下。这个算法的时间复杂度是O(N),空间复杂度是O(1)。

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        return reduce(lambda x, y: x ^ y, nums)