美文网首页
python 按位运算符

python 按位运算符

作者: 聪民 | 来源:发表于2019-12-03 22:37 被阅读0次

    刷leetcode刷到一道题,看到discussions里面有一个挺聪明的解法,记录一下。

    136. Single Number
    Given anon-emptyarray of integers, every element appearstwiceexcept for one. Find that single one.
    Note:
    Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
    Example 1:
    Input:[2,2,1]Output:1
    Example 2:
    Input:[4,1,2,1,2]Output:4
    

    我的方法是用字典保存了所有出现过的数字出现的次数,取value为1的那一个。

    import collections
    class Solution(object):
        def singleNumber(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            d = collections.Counter(nums)
            for key in d:
                if d[key] == 1:
                    return key
    

    按位运算符:python的位运算符是基于其数值化为二进制的0 1bit后再进行的运算;需要注意的是其返回结果为10进制形式。

    ^:按位异或运算符,相同取1,不同取0;
    ~:按位取反运算符,0变为1,1变为0;
    |:按位或运算符,1和0组合为1,纯0或纯1为0;
    &:按位与运算符,只有全是1的时候才为1,只要有一个0为0。
    

    于是就可以写成这样

    def singleNumber(self, nums):
        res =0
        for num in nums:
            res ^= num
    return res
    
    

    相关文章

      网友评论

          本文标题:python 按位运算符

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