( 位运算 ) 461. 汉明距离 ——【Leetcode每日一题】

news2024/11/14 20:41:03

❓461. 汉明距离

难度:简单

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

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

示例 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 0 <= x, y <= 2^{31} - 1 0<=x,y<=2311

💡思路:

基础知识必知:位运算基本原理

法一:数学

  • 除法,取余。

法二:统计1的个数

  • 对两个数进行异或操作,位级表示不同的那一位为 1,统计有多少个 1 即可。

法三:去除最低的那一位 1

  • 使用 z & (z - 1) 去除 z 位级表示最低的那一位。

🍁代码:(Java、C++)

法一:数学
Java

class Solution {
    public int hammingDistance(int x, int y) {
        int ans = 0;
        while(x != 0 || y != 0){
            if(x % 2 != y % 2){
                ans++;
            }
            x /= 2;
            y /= 2;
        }
        return ans;
    }
}

C++

class Solution {
public:
    int hammingDistance(int x, int y) {
        int ans = 0;
        while(x != 0 || y != 0){
            if(x % 2 != y % 2){
                ans++;
            }
            x /= 2;
            y /= 2;
        }
        return ans;
    }
};

法二:统计1的个数
Java

class Solution {
    public int hammingDistance(int x, int y) {
        int ans = 0;
        int z = x ^ y;
        while(z != 0){
            if((z & 1) == 1) ans++;
            z = z >> 1;
        }
        return ans;
    }
}

C++

class Solution {
public:
    int hammingDistance(int x, int y) {
        int ans = 0;
        int z = x ^ y;
        while(z != 0){
            if((z & 1) == 1) ans++;
            z = z >> 1;
        }
        return ans;
    }
};

法三:去除最低的那一位 1
Java

class Solution {
    public int hammingDistance(int x, int y) {
        int ans = 0;
        int z = x ^ y;
        while(z != 0){
            z &= (z - 1);
            ans++;
        }
        return ans;
    }
}

C++

class Solution {
public:
    int hammingDistance(int x, int y) {
        int ans = 0;
        int z = x ^ y;
        while(z != 0){
            z &= (z - 1);
            ans++;
        }
        return ans;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( l o g C ) O(logC) O(logC),其中 C 是元素的数据范围,在本题中 log ⁡ C = log ⁡ 2 31 = 31 \log C=\log 2^{31} = 31 logC=log231=31
  • 空间复杂度 O ( 1 ) O(1) O(1)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505731.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 字典修改对应的键值

将 key ‘1’ 的值 ‘1’, ‘3’, ‘5’ 字符&#xff0c;修改为 ‘2’, ‘4’, ‘5’ 。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单………

Cy5.5 NHS ester 氨基反应性荧光染料Cyanine5.5 -NHS

Cy5.5 NHS ester是一种常用的荧光探针&#xff0c;可用于细胞或组织的荧光标记&#xff0c;也可用于蛋白质或核酸的标记。Cy5.5 NHS ester的荧光峰位于近红外区域&#xff0c;波长为675nm&#xff0c;具有较强的荧光强度和较长的荧光寿命&#xff0c;适合于生物分子在体内或组织…

用友nc软件被locked1勒索病毒攻击,解密恢复oracle数据库与用友nchome的配置文件

当用友NC软件被locked1勒索病毒攻击后&#xff0c;对应企业的oracle数据库和nchome配置文件往往也会受到影响。数据库和配置文件是企业运营的基础&#xff0c;一旦受到感染会导致企业无法正常运转。因此&#xff0c;遇到这种情况需要采取正确的方法来解密恢复对应的Oracle数据库…

手机日程提醒在哪里设置?

在每天要处理的各类事项比较多&#xff0c;且繁杂的情况下&#xff0c;想要有条不紊地安排好每个时间段应该完成的事项&#xff0c;提前设置好日程提醒是非常有必要的。 那么手机日程提醒在哪里设置呢&#xff1f;无论你使用的是小米、荣耀、OPPO等安卓手机&#xff0c;还是华为…

学顶教育:2023年中级经济师什么时候报名?

一、2023年中级经济师申请时间 2023年中级经济师报名时间预计7、8月左右开始&#xff0c;考试时间为11月11-12日。 届时考生可关注中国人事考试网发布的公告。 二、中级经济师网上报名需提供以下材料&#xff1a; 1、 准备一张白色背景的近期免冠照片&#xff0c;尺寸为25mm…

如何构建一个高效的企业舆情监测系统?

随着互联网的快速发展&#xff0c;企业需要对自身在网络上的形象和声誉进行全方位的监控和管理&#xff0c;以保证企业的长期稳定发展。构建一个高效的企业舆情监测系统已经成为了当下企业发展的必要手段。本文将通过国内具体案例分析&#xff0c;阐述如何构建一个高效的企业舆…

和月薪5W的聊过后,才发现自己一直在打杂···

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 我了解了下他的面试过程&#xff0c;就一点&#xff0c;不管是阿里还是腾讯的面试&#xff0c;这个级别的程序员&#xff0c;都会考察项目管理能力&#xff0c;并且权重…

SLAM论文速递:SLAM—(2021) 基于目标检测的动态环境下的视觉SLAM—5.05(1)

论文信息 题目&#xff1a; Visual SLAM in dynamic environments based on object detection 基于目标检测的动态环境下的视觉SLAM论文地址&#xff1a; https://www.sciencedirect.com/science/article/pii/S2214914720304402发表期刊&#xff1a; Defence Technology,&…

2019年上半年软件设计师下午试题

试题四(共 15 分) 阅读下列说明和 C 代码&#xff0c;回答问题 1 至 3&#xff0c;将解答写在答题纸的对应栏内 【说明】 n 皇后问题描述为&#xff1a;在一个 n*n 的棋盘上摆放 n 个皇后&#xff0c;要求任意两个皇后不能冲突, 即任意两个皇后不在同一行、同一列或者同一斜…

【Java入门合集】第五章抽象类和接口(一)

博主&#xff1a;命运之光 专栏&#xff1a;JAVA入门 学习目标 1.了解什么是抽象类&#xff0c;什么是接口&#xff1b; 2.掌握抽象类和接口的定义方法&#xff1b; 3.理解接口和抽象类的使用场景&#xff1b; 4.掌握多态的含义和用法&#xff1b; 5.掌握内部类的定义方法和使用…

2023爱分析·数据开发与管理平台市场厂商评估报告

01.研究范围定义 利用多种数据智能技术实现数据驱动的分析与决策&#xff0c;已经成为当前企业数字化转型最重要的目标之一。随着数据来源日益丰富、数据体量快速增长&#xff0c;企业对数据的依赖和挖掘愈发深入&#xff0c;不仅带来数据应用场景、数据用户角色的复杂和多元&…

“STL算法大全“

前言 欢迎来到&#x1f496;小K&#x1f496;的&#x1f49e;C专栏&#x1f49e;&#xff0c;本小节是继非质变算法的第二篇CSTL算法&#xff0c;所以本节总结了大量的STL算法&#xff0c;以便大家需要时查阅 文章目录 前言质变算法查找算法(13个)排序和通用算法(14个)删除和替…

k8s nfs运行问题、etcd问题、calico网络问题

服务器重启后nfs运行问题导致服务不能正常重启 解决办法 在每个节点下使用如下命令进行查看nfs是否正常启动 systemctl status nfs 如果没有启动&#xff0c;则使用如下命令启动&#xff0c;保证三个节点下的nfs都正常启动 systemctl start nfs 再次查看nfs是否正常启动 syst…

你真的理解PyTorch中的dimension嘛?

文章目录 Understanding dimensions in PyTorch参考 Understanding dimensions in PyTorch 通过可视化3D张量上的求和过程&#xff0c;为PyTorch维度提供更好的直觉 当我们开始用PyTorch张量做一些基本的运算&#xff0c;比如求和时&#xff0c;对于一维张量来说&#xff0c;…

Mysql事务与存储引擎

目录 一、事务的概念二、事务的特点ACID2.1 原子性2.2 一致性2.3 隔离性2.4 持久性2.5 事务的互相影响 三、Mysql事务隔离级别3.1 查询全局事务隔离界别3.2 查询会话事务隔离级别3.3 设置全局事务隔离级别3.4 设置会话事务隔离级别 四、事务控制语句4.1 开始事务与提交4.2 事务…

不同问题来评测百度、谷歌、ChatGPT、Phind、GPT-4(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

ShardingSphere系列四(Sharding-JDBC内核原理及核心源码解析)

文章目录 1. ShardingSphere内核解析1.1 解析引擎1.2 路由引擎1.3 改写引擎1.4 执行引擎1.5 归并引擎 2. ShardingSphere的SPI扩展点2.1 SPI机制2.2 ShardingSphere中的SPI扩展点2.3 实现自定义主键生成策略 3. ShardingSphere源码 1. ShardingSphere内核解析 ShardingSphere虽…

css布局——flex布局知识点总结(青蛙游戏)

文章目录 学习网址推荐align-items、justify-content合并使用左右分布和垂直end flex-directionrowrow-reversecolumncolumn-reserse横向逆转并水平start垂直列并从末尾排列逆向垂直列并左右排列水平居中&#xff0c;垂直end&#xff0c;横向逆向 order、align-selforder改变排…

BOLD动态功能网络连接的时-频-空EEG模式

导读 目的&#xff1a;人们对大规模脑网络功能连接动力学研究的兴趣不断增长&#xff0c;同时也在努力寻找电生理相关。在EEG数据分析中&#xff0c;应用于空域和谱域的常用约束可能会使部分神经活动无法识别。本研究提出了一种与BOLD功能网络连接动态相关的多模态EEG频谱模式…

B. LuoTianyi and the Table

题目链接 Codeforces Round 872 (Div. 2) Example input 5 2 2 1 3 1 4 2 2 -1 -1 -1 -1 2 3 7 8 9 -3 10 8 3 2 4 8 -3 0 -7 1 4 3 -32030 59554 16854 -85927 68060 -64460 -79547 90932 85063 82703 -12001 38762 output 9 0 64 71 1933711 题目大意&#xff1a; 每组测试…