美文网首页
『哈希表;位运算』只出现一次的数字136

『哈希表;位运算』只出现一次的数字136

作者: iamlightsmile | 来源:发表于2020-03-27 20:34 被阅读0次

题目相关

题目解读

显而易见,一个字典即可搞定。然而此题还有一种相当巧妙的解法是位运算,具体如:

  • 如果我们对 0 和二进制位做 XOR 运算,得到的仍然是这个二进制位
    a \oplus 0 = a
  • 如果我们对相同的二进制位做 XOR 运算,返回的结果是 0
    a \oplus a = 0
  • XOR 满足交换律和结合律
    a \oplus b \oplus a = (a \oplus a) \oplus b = 0 \oplus b = b

Python相关

具体实现

哈希表实现如下:

class Solution:
    def singleNumber(self, nums: List[int]) -> int:
        dic = {}
        for num in nums:
            if num not in dic:
                dic[num] = 1
            else:
                del dic[num]
        return list(dic.keys())[0]

位运算实现如下:

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

相关文章

网友评论

      本文标题:『哈希表;位运算』只出现一次的数字136

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