美文网首页
『哈希表;位运算』只出现一次的数字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