码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Leetcode 【477. 汉明距离总和】


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

    给你一个整数数组 nums,请你计算并返回 nums 中任意两个数之间 汉明距离的总和 。

    示例 1:

    输入:nums = [4,14,2]
    输出:6
    解释:在二进制表示中,4 表示为 0100 ,14 表示为 1110 ,2表示为 0010 。(这样表示是为了体现后四位之间关系)
    所以答案为:
    HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6
    

    示例 2:

    输入:nums = [4,14,4]
    输出:4
    

    提示:

    • 1 <= nums.length <= 104
    • 0 <= nums[i] <= 109
    • 给定输入的对应答案符合 32-bit 整数范围

    超时版本:使用异或来查找1的个数,由于最后统计时O(N^2),所以超时

    1. class Solution:
    2. def totalHammingDistance(self, nums: List[int]) -> int:
    3. n=len(nums)
    4. res=0
    5. def HammingDistance(a,b):
    6. ans=0
    7. flag=a^b
    8. while flag:
    9. if flag&1==1:
    10. ans+=1
    11. flag=flag>>1
    12. return ans
    13. if n==2:
    14. return HammingDistance(nums[0],nums[1])
    15. for i in range(n-1):
    16. for j in range(i+1,n):
    17. res+=HammingDistance(nums[i],nums[j])
    18. return res

    巧解版本:

    1. class Solution:
    2. def totalHammingDistance(self, nums: List[int]) -> int:
    3. n = len(nums)
    4. total_distance = 0
    5. for bit in range(32):
    6. count_ones = sum(((num >> bit) & 1) for num in nums)
    7. count_zeros = n - count_ones
    8. total_distance += count_ones * count_zeros
    9. return total_distance

    在汉明距离的计算中,对于一个特定的比特位,假设有count_ones个数的该比特位是1,有count_zeros个数的该比特位是0。那么在这个比特位上的汉明距离之和就是count_ones乘以count_zeros。

    这是因为在这个比特位上,count_ones个数的1与count_zeros个数的0可以组成count_ones * count_zeros个不同的数对,每对数对对应一个汉明距离为1的位。因此,该比特位上的总汉明距离就是count_ones乘以count_zeros。

  • 相关阅读:
    Docker(七)—— 如何制作自己的镜像
    程序控制结构
    Mysql配置主从复制-GTID模式
    linux下mysql8安装
    百度apollo自动驾驶planning代码学习-Apollo\modules\planning\common\IndexedList类代码详解
    C语言中的大端字节序和小端字节序是什么?如何进行字节序的转换?
    Python数据分析--Numpy常用函数介绍(9)-- 与线性代数有关的模块linalg
    为什么不建议使用自定义Object作为HashMap的key?
    【Linux】 linux | docker | 安装nacos
    Java 类之 java.lang.reflect.Method
  • 原文地址:https://blog.csdn.net/Kitsuha/article/details/133888551
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号