zoukankan      html  css  js  c++  java
  • 每日一题力扣477汉明距离和

    两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

    计算一个数组中,任意两个数之间汉明距离的总和。

    错解:

    暴力超时

    class Solution:
        def totalHammingDistance(self, nums: List[int]) -> int:
            s=0
            for i in nums:
                for j in nums:
                    if i!=j:
                        a=bin(i^j).count('1')
                        s+=a
            return s//2

    正解:

    #每一位上1的个数乘以0的个数就是汉明距离。所以就遍历32位        
    class Solution:
        def totalHammingDistance(self, nums: List[int]) -> int:
            n=len(nums)
            res=0
            for i in range(32):#遍历32位
                cnt1=0
                for num in nums:
                    # 统计每个数第i位上1的个数
                    cnt1+=1&(num>>i)#与运算,
                res+=cnt1*(n-cnt1)
            return res
  • 相关阅读:
    手机兼容性测试
    Monkey测试
    ADB常用指令
    ADB移动端测试
    关于虚拟网卡V1,V8的问题
    1
    排序算法
    查找算法
    二叉树的计算
    队列
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14512675.html
Copyright © 2011-2022 走看看