数组中重复数问题

2019-08-29  本文已影响0人  大脸猫猫脸大

题目

136. Single Number

解法

    def singleNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        res = 0
        for num in nums:
            res ^= num
        return res

知识点

1. “&”、“|”、“^”按位逻辑运算
1.1 &是按位逻辑运算符,比如5 & 6,5和6转换为二进制是101和110,此时101 & 110=100,100转换为十进制是4,所以5 & 6=4
1.2 |是按位或逻辑运算符,比如5|6,就是101|110,得到111=7,所以最后结果为7
1.3 ^是按位异或逻辑运算符,比如5^6,其实是101^110,结果是011,所以5^6的答案是3

  1. 逻辑运算交换性
    交换元素位置不改变计算结果,如5^6^5 = 5^5^6 = 6
    ^利用该性质可以消除重复元素。
上一篇下一篇

猜你喜欢

热点阅读