美文网首页
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