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 加 1
            ret += 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 , 再见啦!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transormer(1)-结构解读

Transormer块主要由四个部分组成,注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义,它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

实战Java虚拟机-实战篇

一、内存调优 1.内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大…

Oracle EBS Interface/API(55)- AR收款核销

快速参考 参考点内容功能导航N: AR->收款->收款并发请求None基表AR.AR_RECEIVABLE_APPLICATIONS_ALLAPI参考下面介绍错误信息表None接口FormNone接口RequestNoneDebug ProfileNone详细例子参考如下实例官方文档None数据验证包None标准界面 Path: AR->收款->收款 …

漫谈企业信息化安全 - 勒索软件攻击

一、引言 首先,网络攻击是一个非常广泛的话题,网络攻击从一般分类上包含了恶意软件攻击、钓鱼攻击、拒绝服务攻击(DoS/DDoS)、中间人攻击、SQL注入、跨站脚本、0-Day攻击、供应链攻击、密码攻击等等,勒索软件攻击只是…

【永洪BI】传参组件

1. 参数 参数也叫做变量。永洪中,支持参数的地方很多,几乎涉及整个永洪产品,用起来非常灵活,而且具有强大的能力,可用于各种需要动态改变值的场景。数据源、数据集、报表、实验都可以定义和使用参数,比如在…

爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集

背景/引言 在大数据时代,网络爬虫技术已经成为数据收集的重要手段之一。爬虫技术可以自动化地从互联网上收集数据,节省大量人力和时间成本。然而,当使用需要身份验证的代理服务器时,许多现有的爬虫框架并不直接支持代理认证。这就…

5.1网安学习第五阶段第一周回顾(个人学习记录使用)

本周重点 ①日志检测与HIDS系统 ②Wazuh的应用 ③Wazuh配合syslog的应用 ④Wazuh配置邮箱预警 ⑤Wazuh与Elastic整合 ⑥Wazuh检测木马与配置 ⑦各类日志分析工具(详见笔记) 本周主要内容 ①日志检测与HIDS系统 一、安全服务工程师岗位职责 网络安全服务工程师的职责主…

【Sync FIFO介绍及基于Verilog的实现】

Sync FIFO介绍及实现 1 Intro2 Achieve2.1 DFD2.2 Intf2.3 Module 本篇博客介绍无论是编码过程中经常用到的逻辑–FIFO;该FIFO是基于单时钟下的同步FIFO; FiFO分类:同步FiFO VS 异步FiFO; 1 Intro FIFO可以自己实现,但…

mysqldump提示Using a password on the command line interface can be insecured的解决办法

mysql数据库备份一句话执行命令 mysqldump --all-databases -h127.0.0.1 -uroot -p123456 > allbackupfile.sql 提示如下提示 [rootyfvyy5b2on3knb8q opt]# mysqldump --all-databases -h127.0.0.1 > allbackupfile.sql mysqldump: Couldnt execute SELECT COLUMN_NA…

Unity Miscellaneous入门

概述 在Unity中有非常多好用的组件,也是Unity为我们提供的方便的开发工具,它的功能可能不是主流的内容,比如渲染,音乐,视频等等,所有Unity把这些内容统一归到了一个杂项文件组中。 Unity组件入门篇总目录-…

[AI Google] 10个即将到来的Android生态系统更新

新的体验带来了更强的防盗保护、手表电池寿命优化,以及对电视、汽车等的娱乐功能改进。 昨天,我们分享了Android如何以人工智能为核心重新构想智能手机。今天,我们推出了Android 15的第二个测试版,并分享了更多我们改进操作系统的…

经纬恒润第三代重载自动驾驶平板车

随着无人驾驶在封闭场地和干线道路场景的加速落地,港口作为无人化运营的先行者,其场景的复杂度、特殊性对无人化运营的技术提出了各种挑战。经纬恒润作为无人驾驶解决方案提供商,见证了港口在无人化运营方面的尝试及发展,并深度参…

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题

elementUI使用el-tabs加el-form导致页面崩溃以及el-form里的input事件丢失问题 解决 el-form外面包一层el-row和el-col,el-tabs也包一层 el-fom e-tabs

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…

设计模式使用(成本扣除)

前言 名词解释 基础名词 订单金额:用户下单时支付的金额,这个最好理解 产品分成:也就是跟其他人合做以后我方能分到的金额,举个例子,比如用户订单金额是 100 块,我方的分成是 80%,那么也就是…

《Fundamentals of Power Electronics》——开关电源环路稳定性分析(下)

第二步:我们把控制到输出传递函数的波特图画出来,此时有相位和增益; 第三步:我们已经掌握了一个电源要稳定需要什么样的稳定性条件;

从0开始写一个环境保护网站的第3天(JAVAWEB)

1.目标 实现首页的环境保护原因的查询,和底部友情连接部分 2.实现 2.1建立数据库表格(这里数据全是百度查询) 环境保护原因表: 友情连接表:(数据来源https://zhuanlan.zhihu.com/p/696243646) 2.2前端部分可以自己写,但是我一般都是用框架中的控件,这里用的是boot…

机器学习模型可视化分析和诊断神器Yellowbrick

大家好,机器学习(ML)作为人工智能的核心,近来得到巨大应用,ML是使计算机能够在无需显式编程的情况下进行学习和预测或决策。ML算法通过学习历史数据模式,来对新的未见数据做出明智的预测或决策。然而,构建和训练ML模型…

Jmeter示例参数化

Jmeter示例 1.Jmeter第一个案例操作步骤 2.重点组件线程组1.添加线程组2.线程组的特点3.线程组的分类4.线程组参数详解在取样器执行错误后要执行的动作线程属性调度器配置 5.http请求6.查看结果树 3.Jmeter 参数化1.用户定义的变量场景操作步骤 2.CSV数据文件设置场景操作步骤参…