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

news/2024/9/12 16:42:19/

❓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;谁是这一课…

“卷爆了“的IT互联网行业,为啥至今还有人头铁往里冲?

细数互联网过往的发展史&#xff0c;造就了成千上万的企业家、创业者&#xff0c;众多职场人趋之若鹜地选择互联网行业&#xff0c;想从这个领域捞一桶金。 但不知道从什么时候开始&#xff0c;一篇篇关于互联网红利消失&#xff0c;流量枯竭的文章接踵而至&#xff0c;现在转…

Python实现用于在指定位置进行双击操作

以下是Python实现用于在指定位置进行双击操作的代码&#xff1a; from selenium.webdriver import ActionChainsdef double_tap_point(driver, x, y):actions ActionChains(driver)actions.move_by_offset(x, y).double_click().perform()其中&#xff0c;driver是webdriver对…

基于AI技术的API开发工具,自动化和智能化快速高效开发API

一、开源项目简介 ApiCat 是一款基于 AI 技术的 API 开发工具&#xff0c;它旨在通过自动化和智能化的方式&#xff0c;帮助开发人员更快速、更高效地开发 API。ApiCat 支持 OpenAPI 和 Swagger 的数据文件导入和导出&#xff0c;并可以对用户输入的 API 需求进行分析和识别&a…

Three.js--》理解光源对物体产生影响的重要性

上篇文章 前端开发者掌握3d技术不再是梦&#xff0c;初识threejs 作为three.js入门篇讲解了许多内容但是没有深入了解其原理以及实现方法&#xff0c;仅仅只是展示了实现的内容及代码&#xff0c;本篇文章将深入讲解实现效果其背后用到的知识与原理。 目录 使用相机控件轨道控…

提升应届生职场竞争力:有效策略和关键推动因素

应届生进入职场是一个关键的阶段&#xff0c;他们需要通过有效的方法和策略来提高自己的竞争力&#xff0c;以适应职场的挑战并取得成功。以下是一些可以帮助应届生提升竞争力的方法和策略&#xff0c;以及对其职场发展起到关键推动和支撑作用的方面。 学习和继续教育&#xff…

ChatGPT 变生产力工具

ChatGPT 变生产力工具 chatGPT是一种基于人工智能技术的自然语言处理模型&#xff0c;它使用了深度学习算法&#xff0c;可以对人类语言进行理解和生成。chatGPT可以用于对话系统、智能客服、问答系统等场景&#xff0c;能够实现自然、流畅的对话。 chatGPT的核心技术是基于G…

算法工程师面试题

1.关于边缘提取的算法有那些&#xff1f;各有什么优缺点&#xff1f; Canny算法&#xff1a;Canny算法是一种经典的边缘检测算法&#xff0c;具有较高的准确性和良好的鲁棒性。该算法利用高斯滤波器对图像进行平滑处理&#xff0c;然后计算图像中每个像素的梯度和方向&#xff…

操作系统学习02

&#xff01;&#xff01;&#xff01;由于感冒和出去玩&#xff0c;好几天没学这些计算机基础知识了&#xff01;&#xff01;&#xff01; 抓紧跟上嘿嘿嘿 1、内存管理主要做了什么 操作系统的内存管理非常重要&#xff0c;主要负责下面这些事情&#xff1a; 内存的分配与…

Ordinal 是什么? BTC NFT 解释

Ordinal NFT 于 2023 年 1 月 20 日由开发者 Casey Rodarmor 在 BTC 主网上推出&#xff0c;它是在 BTC上 创建 NFT 的最新方式。虽然 BTC 上的 NFT 并不是一个新概念&#xff0c;BTC 之上的第 2 层网络&#xff08;例如 Counterparty 和 Stacks&#xff09;已经支持基于 BTC 的…

IDEA生成ER图、UML类图、时序图、流程图等的插件推荐或独立工具推荐

以下是几个常用的IDEA插件和独立工具&#xff0c;可以用于生成ER图、UML类图、时序图、流程图等&#xff1a; Visual Paradigm (独立工具) Visual Paradigm是一个强大的建模工具&#xff0c;可以生成UML类图、时序图、流程图等。它支持多种语言和框架&#xff0c;包括Java、Spr…

Oracle PL/SQL基础语法学习15:静态表达式

系列文章目录 Oracle PL/SQL基础语法学习12&#xff1a;短路求值 Oracle PL/SQL基础语法学习13&#xff1a;比较运算符 Oracle PL/SQL基础语法学习14&#xff1a;BOOLEAN表达式 文章目录 系列文章目录前言Oracle PL/SQL基础语法学习15&#xff1a;静态表达式Static Expression…

甘特图控件DHTMLX Gantt入门使用教程【引入】:dhtmlxGantt 与 ASP.NET MVC(上)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的大部分开发需求&#xff0c;具备完善的甘特图图表库&#xff0c;功能强大&#xff0c;价格便宜&#xff0c;提供丰富而灵活的JavaScript API接口&#xff0c;与各种服务器端技术&am…