美文网首页
136. Single Number

136. Single Number

作者: April63 | 来源:发表于2018-05-16 22:29 被阅读0次

首先哈希表的做法,时间复杂度够,但是空间肯定不行:

class Solution(object):
    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dic = {}
        for i in range(len(nums)):
            if nums[i] not in dic:
                dic[nums[i]] = 1
            else:
                dic[nums[i]] += 1
        for n in nums:
            if dic[n] == 1:
                return n

思路2:利用异或操作。异或的性质1:交换律a ^ b = b ^ a,性质2:0 ^ a = a。于是利用交换律可以将数组假想成相同元素全部相邻,于是将所有元素依次做异或操作,相同元素异或为0,最终剩下的元素就为Single Number。时间复杂度O(n),空间复杂度O(1)

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

相关文章

网友评论

      本文标题:136. Single Number

      本文链接:https://www.haomeiwen.com/subject/pyomdftx.html