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

news/2025/1/15 6:17:09/

❓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.ppmy.cn/news/65649.html

相关文章

光的基础知识

光子的产生 光子是电磁辐射的基本粒子&#xff0c;它是由电场和磁场相互作用而产生的。当电场和磁场发生变化时&#xff0c;它们会相互影响并产生能量&#xff0c;这个能量以光子的形式释放出来。 例如&#xff0c;当电流通过导体时&#xff0c;电子会受到电场的加速作用&…

总结常见评价指标

整理一下在机器学习中常见的评价指标&#xff0c;包括&#xff1a; 混淆矩阵&#xff0c;TPR&#xff0c;FPR&#xff0c;TNR&#xff0c;FNR&#xff1b;Precision&#xff0c;Recall&#xff0c;Accuracy&#xff0c;F-score(F1-meature)ROC曲线&#xff0c;AUC&#xff1b; …

shell中函数的应用(题型列举)

1、编写函数&#xff0c;实现打印绿色OK和红色FAILED 判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 第一步&#xff1a;进入脚本文件进行编辑 第二步&#xff1a;编辑函数脚本文件 colour() {if [ $# -ne 0 ];thenecho -e "\033[32m OK \033[0m"e…

【K8S系列】快速初始化⼀个最⼩集群

序言 走得最慢的人&#xff0c;只要不丧失目标&#xff0c;也比漫无目的地徘徊的人走得快。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级重要蓝色&#xff1a;用来标记二级重要 希望这篇文章能让你不仅有…

MySQL基础(二十二)逻辑架构

1.逻辑架构剖析 1.1 第1层&#xff1a;连接层 系统&#xff08;客户端&#xff09;访问MySQL服务器前&#xff0c;做的第一件事就是建立TCP连接。 经过三次握手建立连接成功后&#xff0c;MySQL服务器对TCP传输过来的账号密码做身份认证、权限获取。 用户名或密码不对&#…

工业物联网是什么?工业物联网发展前景如何?

工业物联网 (IIoT) 是在工业环境中使用互连的智能设备、传感器和软件来提高运营效率、生产力和安全性。IIoT 系统通常涉及机器、设备和传感器&#xff0c;这些机器、设备和传感器嵌入了相互通信以及与中央系统通信的技术。这允许对工业过程进行实时监控和分析&#xff0c;并能够…

51个常用免费工具列表

2023 年可用于查找、分析和研究加密货币的 51 个免费网站和指标。 一、发现新代币和项目 https://coinmarketcap.com/ico-calendar/ 查市值、即将推出的 ICO 和 IDO 的信息。https://coinbrain.com/ 可以使用他们的过滤功能来搜索最近创建的代币。https://money.moralis.io/t…

《手腕佩戴式消费级可穿戴设备在生物行为研究中心率评估指南》阅读笔记

目录 一、论文摘要 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课…