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

题目相关

题目解读

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

  • 如果我们对 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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容