算法与数据结构练习——异或

news2024/11/30 13:13:54

知识点讲解:

一、异或操作定义:

异或是指相同为0,不同为1,也可理解为无进位相加!! 很重要!!

二、关于异或运算的几个性质:

1.0^N=N        (0和任何数异或都是原来的数)

2.N^N=0        (任何数异或自己都是0)

3.满足交换律和结合律:

所以无论怎么改变顺序,最后的结果都是一样的!!

4.重要!!!!

 刷题:

一、第一题:只出现一次的数字1

1.题目描述:

2.分析题目:

这个题目还比较简单哈,直接应用我上边的异或的一些性质,以及联系题目的描述,就知道用异或是最方便的,偶数次出现的数都会被消掉,最后留下来的肯定就是基数次出现的那个数辣,所以用for循环就可以求解了,一遍过哈

3.题解:

class Solution {
    public int singleNumber(int[] nums) {
        int sum=nums[0];
        for(int i=1;i<nums.length;i++){
            sum=sum^nums[i];
        }
        return sum;
    }
}

二、第二题:丢失的数字

1.题目描述:

2.分析题目:

这个题目可以参考我的上边的异或运算的第三个性质,整体异或和  异或上   整体中部分的异或和   等于整体-部分的那部分数字的异或和,我刚开始写这个题目没有想到这个知识点,以为把这部分的结果异或出来就是缺失的那部分值了,但是显然不是,测试点只过了一个,所以代码如下:

3.题解:

由于0异或任何数都等于原来的那个数,所以这里可以放心的初始化数据为0

class Solution {
    public int missingNumber(int[] nums) {
        int ErAll=0;int Erpart=0;
        //由于0异或任何数都等于原来的那个数,所以这里可以放心的初始化数据为0
        for(int i=0;i<nums.length;i++){
            ErAll^=i;
            Erpart^=nums[i];
        }
        ErAll^=nums.length;
        return ErAll^Erpart;
    }
}

三、第三题:只出现一次的数字3

1.题目描述:

2.分析题目:

这个题目和第一个题目一样,难道是要卡时间复杂度么,这里好像是nums[i]范围有了一定的变化,我天,惹,好像是这里是两个元素只出现了一次,所以困难就是如何通过这个最后异或结果得到的a^b来把最后的a和b分别计算出来,例如题目中的nums1这个数组:

那么3和5异或的结果就是0110,结果最右边的1就代表他们这个位置上的0还是1是不一样的,那么我们就可以知道这个数组中一定可以分为这个位置是0还是1的两部分数字

那么:

第一类  这个第i个位置上是0   A组

第二类  这个第i个位置上是1   B组

因为无论偶数次出现的数字这个位置是什么,他们一定要么分到A组,要么分到B组,而且还都是偶数次出现的,所以这样把他们分类之后,A组和B组就又像第一题里边一样,只有一个只出现一次的数字了,所以把这个组里边的数字异或出来就是要求得的其中一个结果

最后这个结果和最开始把所有数字都异或的结果相异或,就得到了另一个数字结果

这样就求出来了

补充:如何找到int类型的数字最靠右的1

3.题解:

惹,错误答案,只过了6个测试点:

class Solution {
    public int[] singleNumber(int[] nums) {
        int result=0;int result1=0;
        for(int i=0;i<nums.length;i++){
            result^=nums[i];
        }

        //找到最右边的第一个1
        int right=result&(-result);
        for(int i=0;i<nums.length;i++){
            if((right ^ nums[i])!=nums[i])
                result1^=nums[i];
        }

        int b=0;
        b=result1^result;
        return new int[]{result1,b};
    }
}

惹,好家伙,只需要把判断阵营那里的代码修改一下就可以了,改成下面的:

    if((right & nums[i])!=0)
                result1^=nums[i];

但是为啥异或不等于它本身不能用来判断阵营啊??

0110----->0010

0010

0001

我知道了,笑死我了,这样怎么可能等于本身,直接等于0了,笑死,因为你看,上边---->符号右边的就是得出来的那个最右边为1的那个数,我想的是如果其他数不为0,那么异或出来肯定还是本身啊,那么就只需要管判断阵营的那个数字是啥了,那么就分两种情况

???不对啊,就是不是它本身,不是它本身就说明不是它的阵营,哦对,不同阵营就会被判成1,还是不是和原来一样,所以确实搞错了

========分割线,上边在胡言乱语哈,纯属心理博弈:

其实我的做法问啥错呢,因为我把异或结果是否是本身作为了这个衡量标准,但是你想,除了要判断的那位数,其他位置上的数确实因为与0相异或而没变,但是如果要判断的那个位置上是0,与1异或,结果就是1,如果位置上是1,那么结果就是0,总而言之,无论是哪一种阵营里边的数,其实异或之后都绝对不是它本身,所以这个解法是错的,

所以还是&之后结果是0还是不是0,更能作为判断依据

ok,今天就写到这,下班,

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

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

相关文章

STM32G4系列MCU的Direct memory access controller (DMA)功能介绍之二

目录 概述 1 DMA通道 1.1 可编程数据大小 1.2 指针增量 2 通道配置 2.1 配置步骤 2.2 通道状态和禁用通道 3 模式应用 3.1 循环模式&#xff08;内存到外设/外设到内存的传输&#xff09; 3.2 内存到内存模式 3.3 Peripheral-to-peripheral模式 3.4 编程转移方向&a…

【一文读懂】大语言模型

学习参考 项目教程&#xff1a;中文教程 代码仓库&#xff1a;代码地址 仓库代码目录说明&#xff1a; requirements.txt&#xff1a;官方环境下的安装依赖 notebook&#xff1a;Notebook 源代码文件 docs&#xff1a;Markdown 文档文件 figures&#xff1a;图片 data_base&…

注册表修改键盘位置

1.winr 输入 regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.右键Keyboard Layout->新建->二进制值->取名Scancode Map 4.右键Scancode Map&#xff0c;修改如下 //第一列 自动生成序号&#xff0c;不用管 第一行 输入8个00 第二…

服务器密码错误被锁定怎么解决?

当服务器密码错误多次导致账号被锁定时&#xff0c;解决方法需要根据服务器的操作系统&#xff08;如 Linux 或 Windows &#xff09;和具体服务器环境来处理。以下是常见的解决办法&#xff1a; 一、Linux 服务器被锁定的解决方法 1. 使用其他用户账号登录 如果有其他未被…

shell脚本编写练习2

1.准备阶段 在根目录下创建一个目录来存储shell脚本 mkdir /s3 2.题目 1. 使用case实现成绩优良差的判断 #!/bin/bash# 假设成绩存储在变量GRADE中 read -p "请输入成绩&#xff08;0-100&#xff09;&#xff1a;" GRADE# 使用case语句进行判断 case $GRADE in[…

清远榉之乡托养机构探讨:自闭症的本质辨析

当人们谈及自闭症时&#xff0c;常常会产生一个疑问&#xff1a;自闭症是精神类疾病吗&#xff1f;今天&#xff0c;清远榉之乡托养机构就来为大家解开这个疑惑。 榉之乡大龄自闭症托养机构在江苏、广东、江西等地都有分校&#xff0c;一直致力于为大龄自闭症患者提供专业的支持…

基于PoE交换机的智慧停车场监控组网应用

伴随城市发展快速&#xff0c;汽车保有量也不断增长&#xff0c;导致停车管理问题也愈发凸显。针对包括路侧停车位、地面停车场、地下停车场等场景的停车管理需求&#xff0c;通常会部署监控设备进行车位监测、现场安全监测等&#xff0c;助力构建智能化停车管理。因此如何为分…

.net XSSFWorkbook 读取/写入 指定单元格的内容

方法如下&#xff1a; using NPOI.SS.Formula.Functions;using NPOI.SS.UserModel;using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;/// <summary>/// 读取Excel指定单元格内容/// </summa…

10个Word自动化办公脚本

在日常工作和学习中&#xff0c;我们常常需要处理Word文档&#xff08;.docx&#xff09;。 Python提供了强大的库&#xff0c;如python-docx&#xff0c;使我们能够轻松地进行文档创建、编辑和格式化等操作。本文将分享10个使用Python编写的Word自动化脚本&#xff0c;帮助新…

红日靶场-5

环境搭建 这个靶场相对于前几个靶场来说较为简单&#xff0c;只有两台靶机&#xff0c;其中一台主机是win7&#xff0c;作为我们的DMZ区域的入口机&#xff0c;另外一台是windows2008&#xff0c;作为我们的域控主机&#xff0c;所以我们只需要给我们的win7配置两张网卡&#…

[Java]微服务之分布式事务

介绍 下单业务&#xff0c;前端请求首先进入订单服务&#xff0c;创建订单并写入数据库。然后订单服务调用购物车服务和库存服务: 购物车服务负责清理购物车信息库存服务负责扣减商品库存 问题分析: 下单过程中, 订单服务创建订单, 插入自己的数据库, 执行成功购物车服务, 清…

存储结构及关系(一)

学习目标 描述数据库的逻辑结构列出段类型及其用途列出控制块空间使用的关键字获取存储结构信息 段的类型 段是数据库中占用空间的对象。它们使用数据库数据文件中的空间。介绍不同类型的段。 表 表是在数据库中存储数据的最常用方法。表段用于存储既没有集群也没有分区的表…

cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection

原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection&#xff0c;构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…

AMD的AI芯片Instinct系列介绍

AMD最强AI芯片发布&#xff01; 在旧金山举行的Advancing AI 2024大会上&#xff0c;AMD推出Instinct MI325X AI加速器&#xff08;以下简称MI325X&#xff09;&#xff0c;直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示&#xff0c;与英伟达H200的集成平台H200 …

【大数据学习 | Spark调优篇】Spark之内存调优

1. 内存的花费 1&#xff09;每个Java对象&#xff0c;都有一个对象头&#xff0c;会占用16个字节&#xff0c;主要是包括了一些对象的元信息&#xff0c;比如指向它的类的指针。如果一个对象本身很小&#xff0c;比如就包括了一个int类型的field&#xff0c;那么它的对象头实…

基于深度学习的卷积神经网络十二生肖图像识别系统(PyQt5界面+数据集+训练代码)

本研究提出了一种基于深度学习的十二生肖图像识别系统&#xff0c;旨在利用卷积神经网络&#xff08;CNN&#xff09;进行图像分类&#xff0c;特别是十二生肖图像的自动识别。系统的核心采用了两种经典的深度学习模型&#xff1a;ResNet50和VGG16&#xff0c;进行图像的特征提…

kali linux 装 virtual box 增强工具 Guest Addition

kali linux 装 virtual box 增强工具 Guest Addition install Virtual Box Guest Addition in kali linux 搞了一下午&#xff0c;最终发现是白折腾。 kali linux 自带 virtual box 的增强工具。 kali linux 2021.3 之后的版本都是自带virtual box 增强工具 解决方法 直接…

vue3请求接口报错:Cannot read properties of undefined (reading ‘data‘)

文章目录 报错内容解决方案 报错内容 Cannot read properties of undefined (reading ‘data’) 解决方案 响应未按预期返回 确保服务器返回的数据结构符合预期。例如&#xff0c;服务器可能返回了一个错误响应&#xff0c;而不是预期的 JSON 数据。 检查响应 在 response 拦…

RocketMQ rocketmq-tools管理主题

RocketMQ rocketmq-tools管理主题 环境和软件版本增删改查 环境和软件版本 Win10、IDEA、Jdk1.8、rocketmq 5.1.3、rocketmq-tools 5.1.3 引入依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-tools</artifactId&g…

《datawhale2411组队学习 模型压缩技术7:NNI剪枝》

文章目录 一、NNI简介二、 NNI剪枝快速入门2.1 加载并训练模型2.2 模型剪枝2.3 模型加速&#xff08;剪枝永久化&#xff09;2.4 微调压缩模型2.5 Slim Pruner测试 三、 使用NNI3.0进行Bert压缩&#xff08;剪枝、蒸馏)3.1 数据预处理3.2 训练模型3.3 设置模型蒸馏函数3.4 修剪…