leetcode-136-只出现一次的数字

题目描述:

方法一:哈希表 O(N) O(N)

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        hash_table = {}
        for i in nums:
            try:
                hash_table.pop(i)
            except:
                hash_table[i] = 1
        return hash_table.popitem()[0]

方法二:数学 O(n) O(n)

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        return 2*sum(set(nums))-sum(nums)

方法三:位操作 异或 O(n) O(1)

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        a = 0
        for i in nums:
            a ^= i
        return a

 

posted @ 2019-07-16 16:30  oldby  阅读(147)  评论(0编辑  收藏  举报