LeetCode刷题之HOT100之汉明距离

大家晚上好啊,今天几乎啥也没干,上个课就耽误了一下午,晚上来了积极性也不高,先完成今天的题目吧,请看题:

1、题目描述

在这里插入图片描述

2、逻辑分析

没有遇到过这种题目,想不出来有什么解法,看题解先。题解给出了三种解法:内置位计数功能法、移位实现位计数以及Brian Kernighan 算法。第一种方法在这里就不考虑了,直接使用内置函数。我们直接来看移位实现位计算法:在这之前我们要先了解两个整数之间的汉明距离可以怎么得来。那就是两数的二进制数通过异或运算,计算后二进制位数为1的个数就是汉明距离。

3、代码演示

public int hammingDistance(int x, int y) {// 计算 x 和 y 的异或结果,存储在 s 中int s = x ^ y, ret = 0;// 只要 s 不等于 0,就一直执行循环while(s != 0){// 将 s 的最低位与 1 进行 & 运算,得到的结果就是 s 的最低位// 如果最低位是 1,说明对应位置的字符不同,需要将 ret 加 1ret += s & 1;// 将 s 右移一位,准备处理下一个位s >>= 1;}// 返回最终的汉明距离return ret;}

代码注释很清晰,接下来我们用例子来验证我们的算法:

假设我们有 x = 1 和 y = 4。

1、 首先,我们计算 x 和 y 的异或结果:

  • x = 1 的二进制表示为 0000 0001
  • y = 4 的二进制表示为 0000 0100
  • x ^ y = 0000 0101 = 5
  • 所以 s = 5

2、接下来,我们初始化 ret = 0。
3、进入循环处理 s(0000 0101):

  • 第 1 次循环:
  • s & 1 = 1
  • ret = 0 + 1 = 1
  • s >>= 1 得到 s = 2
  • 第 2 次循环:
  • s & 1 = 0
  • ret = 1 + 0 = 1
  • s >>= 1 得到 s = 1
  • 第 3 次循环:
  • s & 1 = 1
  • ret = 1 + 1 = 2
  • s >>= 1 得到 s = 0
  • 循环结束,返回 ret = 2。
  • 让我们验证一下这个结果是否正确:

x = 1 的二进制表示为 0000 0001
y = 4 的二进制表示为 0000 0100
可以看出,在第 1 位和第 3 位,x 和 y 的二进制位不同,因此汉明距离为 2。
所以,这个算法正确地计算出了 x 和 y 之间的汉明距离。

时间复杂度:O(logC),其中 C是元素的数据范围,空间复杂度:O(1)。

好啦,今天的题就到这里了哈,这周状态不佳,可能跟下雨有关哈哈,今天不下雨,等会早点回去跑个步分泌一下内啡肽,All right , 再见啦!

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

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

相关文章

跟TED演讲学英文:Do schools kill creativity by Sir Ken Robinson

Do schools kill creativity? Link: https://www.ted.com/talks/sir_ken_robinson_do_schools_kill_creativity Speaker: Sir Ken Robinson Date: February 2006 文章目录 Do schools kill creativity?IntroductionVocabularySummaryTranscriptAfterword Introduction Sir…

可转债日内自动T+0交易,行情推送+策略触发+交易接口

说明 目前这个项目已编译打包,下载即可测试,直接生成多平台可执行文件,详见运行方法。行情部分与策略弱相关,拆分解耦单独作为一个项目。行情项目请移步GitHub - freevolunteer/hangqing: A股行情订阅工具,支持股票/可转债level2/level2数据&…

【stm32/CubeMX、HAL库】嵌入式实验六:定时器(3)|外部脉冲计数

参考: 【【正点原子】手把手教你学STM32CubeIDE开发】 https://www.bilibili.com/video/BV1Wp42127Cx/?p13&share_sourcecopy_web&vd_source9332b8fc5ea8d349a54c3989f6189fd3 《嵌入式系统基础与实践》刘黎明等编著,第九章定时器&#xff0c…

Generic Segmentation Offload(GSO)

Generic Segmentation Offload汉语意思是啥? Generic Segmentation Offload(GSO)的汉语意思是“通用分段卸载”。在网络通信中,GSO 是一种技术,用于在网络栈中将较大的传输单元分段为更小的单元,以提高网络…

文心智能体应用示例:职场反PUA专家的诞生

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

C#编程-.NET Framework使用工具类简化对象之间的属性复制和操作

在C#编程中,对象之间的属性复制和操作是一个常见的需求。为此,.NET Framework提供了多种实用工具库,如AutoMapper、ValueInjecter和ExpressMapper。这些库通过简化代码,提高了开发效率。本文将介绍这些工具库,比较它们…

远程桌面连接不上远程服务器,如何有效的解决远程桌面连接不上远程服务器的问题

在解决远程桌面连接不上远程服务器的问题时,我们需要采取一种专业且系统的方法来排查和修复可能存在的故障。以下是一些建议和步骤,帮助用户更有效地解决此类问题。 首先,用户需要确认远程服务器的状态和网络连接是否正常。 这包括检查服务器…

Linux入门攻坚——23、DNS和BIND基础入门2

前一篇实践了正向解析服务器的配置使用,如何配置反向解析呢? 反向区域: 区域名称:网络地址反写.in-addr.arpa. 192.168.138. --> 138.168.192.in-addr.arpa. (1)定义区域: zone "ZONE_NAME" I…

必应bing国内广告如何开户,这篇文章告诉你!

搜索引擎广告推广已成为企业提升品牌知名度、吸引潜在客户的重要渠道,微软必应Bing,作为全球领先的搜索引擎之一,其广告平台为企业提供了一个高效、精准的推广渠道。如何在必应Bing国内广告平台上开户,让你的品牌大放异彩呢&#…

java项目之人事系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的人事系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于vue的人事系统的主要使用者…

【Spring】spring入门程序

案例要求:创建一个 Studentservice 类,其中需要使用 studentDao 接口的保存方法,来存储一个Student 类的对象,StudentDao 接口有两个不同的实现类,通过 Spring 的方式,为 Student类创建对象并为属性赋值&am…

若依微服务整合knife4j

在Spring Cloud的微服务架构下&#xff0c;每个微服务并不需要引入前端的ui资源&#xff0c;因此在每个微服务的Spring Boot项目下&#xff0c;引入ruoyi-common-swagger提供的starter即可。 1、在ruoyi-gateway网关模块下&#xff0c;把knife4j依赖资源引入 <!-- knife4j…

【设计模式深度剖析】【A】【创建型】【对比】| 工厂模式重点理解产品族的概念

回 顾&#xff1a;创建型设计模式 1.单例模式&#x1f448;️ 2.工厂方法模式&#x1f448;️ 3.抽象工厂模式&#x1f448;️ 4.建造者模式&#x1f448;️ 5.原型模式&#x1f448;️ &#x1f448;️上一篇:原型模式 | &#x1f449;️下一篇:代理模式 目录…

高中数学:平面向量-基本定理

一、基本定理 二、向量夹角 三、常用性质 三角形中线对应的向量与三角形两边的关系 四、练习 例题1 例题2 解 例题3 解 此题&#xff0c;用到了向量的基本定理&#xff1a;若 a → \mathop{a}\limits ^{\rightarrow} a→、 b → \mathop{b}\limits ^{\rightarrow} b→​…

领券拿外卖返利红包,最低0元吃外卖

小蚕荟是利用本地资源和自媒体优势构建的“本地生活服务”平台&#xff0c;总部位于杭州&#xff0c;旨在为用户提供热门的吃喝玩乐本地生活服务类产品。布局已覆盖杭州、南京、上海等一二线城市。 小蚕荟是一款专为用户吃外卖省钱的生活工具&#xff0c;单单可返利15元起&…

ASP+ACCESS基于WEB车辆管理系统

3.1 系统需求分析 该过程是个不断认识不断细化的过程。这里所要完成的工作是深入描述软件的功能和性能&#xff0c;确定软件的设计限制和软件同其他系统元素的接口细节&#xff0c;从而奠定软件的开发基础。 性能需求&#xff1a;该系统中&#xff0c;管理员模块只有管理人员…

CentOS7离线安装Nginx

目录 1. 安装gcc2. 安装g3. 安装openssl4. 安装pcre5. 安装zlib6. 安装Nginx7. 启动nginx8. 开放80端口9. 访问测试10. 设置开机自启 Nginx离线安装需要依赖gcc、g环境&#xff0c;安装前要先检查linux系统中是否自带gcc和g&#xff0c;如果没有就需要先进行安装。 然后再安装o…

【MySQL精通之路】InnoDB(4)-架构图

下图显示了构成InnoDB存储引擎体系结构的内存和磁盘结构。有关每个结构的信息 请参阅“内存中的InnoDB结构”和“磁盘上的InnoDB结构”。

Jmeter+prometheus+grafana性能测试

文章目录 Jmeterprometheusgrafana性能测试背景目标设计思路原理案例启发 Jmeterprometheusgrafana性能测试 背景 ​ 在现代社会中&#xff0c;人们对于应用程序的响应速度和性能体验提出了越来越高的要求。无论是电子商务网站、社交媒体平台还是企业级软件系统&#xff0c;都…

6款网站登录页(附带源码)

6款网站登录页 效果图及部分源码123456 领取源码下期更新预报 效果图及部分源码 1 部分源码 <style>* {margin: 0;padding: 0;}html {height: 100%;}body {height: 100%;}.container {height: 100%;background-image: linear-gradient(to right, #fbc2eb, #a6c1ee);}.l…