汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

这篇具有很好参考价值的文章主要介绍了汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题记:

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

给你两个整数 x 和 y,计算并返回它们之间的汉明距离。

示例 1:

输入:x = 1, y = 4
输出:2
解释
1 (0 0 0 1)
4 (0 1 0 0)
------↑— ↑
上面的箭头指出了对应二进制位不同的位置。

示例 2:

输入:x = 3, y = 1
输出:1

提示:

  • 0 <= x, y <= 2 ^ 31 - 1

题目来源:
作者:LeetCode
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnyode/
来源:力扣(LeetCode)

解题方法:

x和y都转化为二进制的时候,在相同的位置上如果值都一样,他们的汉明距离就是0。如果在相同的位置上值不一样,有多少个不一样的位置,那么汉明距离就是多少。所以看到这道题,我们应该最容易想到的就是先异或运算,然后再计算这个异或运算的结果在二进制表示中1的个数。代码如下

public int hammingDistance(int x, int y) {
    return Integer.bitCount(x ^ y);
}

一行代码搞定,这题实际上没什么难度,我们只需要计算x和y的异或结果,然后再计算这个结果的二进制中1的个数即可。在之前我们分3个系列分别讲到了二进制中1的个数

《位1的个数系列(一)》
《位1的个数系列(二)》
《位1的个数系列(三)》

当然这题答案非常多,下面我们再来看两种写法

一:右移

public int hammingDistance(int x, int y) {
    int xor = x ^ y;
    int res = 0;
    while (xor != 0) {
        res += xor & 1;
        xor = xor >>> 1;
    }
    return res;
}

转换为PHP代码为:

function hammingDistance($x, $y) {
    $xor = $x ^ $y;
    $count = 0;
    while($xor != 0){
        $count += $xor & 1;
        $xor = $xor >> 1;
    }
    return $count;
}

二:不通过移位计算

前面两种方式要么是移动原数字,要么是移动1,这次我们不移动任何数字来计算。在位运算中有这样一个操作,就是n&(n-1)可以把n最右边的1给消掉。举个例子,当n=12的时候,我们来画个图看一下
汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。,PHP,php,数据结构,算法,leetcode
明白了这个知识点,代码就很容易写了,我们通过循环计算,不断的把n右边的1给一个个消掉,直到n等于0为止

public int bitCount(int n) {
    int count = 0;
    while (n != 0) {
        n &= n - 1;
        count++;
    }
    return count;
}

我们还可以把它给为递归的写法,直接一行代码搞定

public int bitCount(int n) {
    return n == 0 ? 0 : 1 + bitCount(n & (n - 1));
}

转换为PHP代码为:

function hammingDistance($x, $y) {
    $xor = $x ^ $y;
    $count = 0;
    while($xor != 0){
        $count += 1;
        $xor &= $xor - 1;
    }
    return $count;
}

方法来源:
作者:数据结构和算法
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnyode/?discussion=TsikCY
来源:力扣(LeetCode)文章来源地址https://www.toymoban.com/news/detail-614338.html

到了这里,关于汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • leetcode 461. 汉明距离

    leetcode 461. 汉明距离

            比较简单的一题,先对两个整数进行异或操作,会将两个整数二进制形式中各个数字进行异或操作,不同的数字则为1,再通过移位操作统计得到的二进制数中为1的个数,即为所求。 Java代码如下:

    2024年02月22日
    浏览(9)
  • Java:计算地球上两个经纬度坐标之间的距离-geodesy和geotools实现

    两个点的经纬度 latitude纬度 longitude经度 地点 22.678611 113.805695 深圳同泰万怡酒店 22.716473 113.826391 深圳宝安中天美景华美达酒店 各种计算方式 计算方式 距离 Elasticsearch:7.12.1 4715.088099751495 自定义公式计算 4720.367727793572 org.gavaghan/geodesy 4715.085736444097 org.geotools/gt-referencing 4701.260

    2024年02月02日
    浏览(11)
  • MySQL的“双1”配置指的是什么

    在MySQL配置中, sync_binlog 和 innodb_flush_log_at_trx_commit 都设置为1通常被称作“双1”配置。 这两个选项都与数据的持久性和一致性有关: sync_binlog=1 :该设置会使得MySQL每次提交事务时都会同步二进制日志(binlog)到磁盘。这样可以确保在发生故障时,已提交的事务不会丢失,因

    2024年01月23日
    浏览(11)
  • 网络测试设备有哪些 分别指的是什么

    网络测试设备完成诸如以太网线卡之类网络设备的功能测试,从而确保它们可以正确的接收和传输数据。在一个以太网测试中,以太网的流量或数据从网络中路由到被测试的以太网板上然后被发送到网络测试仪器上。10/100以太网媒体存取控制器(MAC)发送数据到网络流量采集及

    2024年02月05日
    浏览(11)
  • 深度学习中的正则化指的是什么?

    在深度学习中,正则化是一种技术,旨在减少模型的过拟合,提高其在未见数据上的泛化能力。过拟合是指模型在训练数据上表现得非常好,但在新数据上表现不佳的情况。正则化通过对模型添加某种形式的约束或惩罚来实现这一目标。以下是几种常见的正则化技术: L1 和

    2024年01月23日
    浏览(8)
  • 电脑硬盘指的是什么?电脑硬盘长什么样子呢

    电脑硬盘指的是什么?电脑硬盘长什么样子呢

    目录 一,机械硬盘 二、固态硬盘 在很早之前就听说过电脑里面有硬盘,但是不知道电脑硬盘是什么样子,本章文章结合硬盘的接口类型,以及应用技术,说说与硬盘样式有关的知识  如果从硬盘的应用技术来区分硬盘,一般分为两种,早些年大多数设备使用的都是机械式硬

    2024年02月16日
    浏览(11)
  • Web3与Web3.0: Web3指的是去中心化和基于区块链的网络,Web3.0指的是链接或语义网络。

    目录 Web3与Web3.0: Web3指的是去中心化和基于区块链的网络 Web3.0指的是链接或语义网络。

    2024年02月05日
    浏览(16)
  • 等保2.0一个中心三重防护指的是什么?如何理解?

    等保2.0政策已经落地执行有一段时间了,但还有很多人对于相关政策不是很了解,例如等保2.0一个中心三重防护指的是什么?如何理解?今天我们大家一起来简单聊聊。 等保2.0一个中心三重防护指的是什么?如何理解? 【回答】:等保2.0充分体现了“一个中心三重防御“的

    2024年02月09日
    浏览(7)
  • 新能源汽车的三电指的是什么,作用有什么区别。

    问题描述:新能源汽车的三电指的是什么,作用有什么区别。 问题解答: \\\"新能源汽车的三电\\\"通常指的是新能源汽车中的三大核心电气系统,包括:高压电池系统、电动机驱动系统和电子控制系统。这三者协同工作,实现电能的存储、转换和控制,是新能源汽车的关键组成部

    2024年01月23日
    浏览(7)
  • 【热门框架】Maven中聚合,继承指的是什么?有什么作用?

    Maven中的聚合和继承是两个重要的功能,用于管理多个项目的共同部分。 聚合 Maven中的聚合(Aggregation)指的是将多个子项目聚合成一个父项目的过程。聚合的语法如下: 在这个例子中, modules 元素用来指定子项目列表。在父项目中使用聚合的好处在于: 方便对多个子项目进

    2024年02月02日
    浏览(5)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包