49.LeetCode136. 只出现一次的数字

2018-10-15  本文已影响35人  月牙眼的楼下小黑

题目要求不用额外空间,一时想不出解法,瞅了下solution, 确认过眼神,是精妙的解法。
异或运算满足 交换律,结合律。假设所有的数为:abcbcdad 为只出现一次的元素,为找出 d, 只需:

a ^ b ^ c ^ b ^ c ^ d ^ a
= a ^ a ^ b ^ b ^ c ^ c ^ d
= 0 ^ 0 ^ 0 ^ d
= d

例子来源

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        a = 0
        for i in nums:
            a ^= i
        return a

暂略。

上一篇 下一篇

猜你喜欢

热点阅读