96、技巧-只出现一次的数字

news2024/12/23 17:22:28

思路

首先不考虑额外空间的话使用一个set去重即可。第二种就是异或运算。

异或操作的性质

  1. 身份元素:任何数与0进行异或运算,结果仍然是原数,即 x ^ 0 = x
  2. 自反性:任何数与自身进行异或运算,结果是0,即 x ^ x = 0
  3. 交换律:异或运算满足交换律,即 x ^ y = y ^ x
  4. 结合律:异或运算满足结合律,即 x ^ (y ^ z) = (x ^ y) ^ z

利用自反性相同的数异或都会得0,这个时候就是可以去掉所有的重复数,然后任何数与0进行异或运算,结果仍然是原数,这个时候就得到出现一次的元素了。代码如下:

 public static int singleNumber(int[] nums) {
		int eor = 0;
		for (int num : nums) {
			eor ^= num;
		}
		return eor;
	}

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

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

相关文章

Spring Cloud Consul 4.1.1

该项目通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法,为 Spring Boot 应用程序提供 Consul 集成。通过一些简单的注释,您可以快速启用和配置应用程序内的常见模式,并使用基于 Consul 的组件构建大型分布式系统。提供的模式…

Python版Spark core详解

文章目录 第一章 SparkCore1.1. Spark环境部署1.1.1. Spark介绍1.1.1.1. 什么是Spark1.1.1.2. Spark与MapReduce的对比框架对比运行流程对比 1.1.1.3. Spark的组件1.1.1.4. Spark的特点 1.1.2. Spark的安装部署1.1.2.1. Spark安装包下载1.1.2.2. Spark部署模式介绍1.1.2.3. Loc…

解决Vue devtools插件数据变化不会自动刷新

我们使用devtools插件在监测vuex中表单或自定义组件的数据,发现页面数据发生变化后,但是devtools中还是老数据,必须手动点击devtools刷新才能拿到最新的数据。很烦! 解决方案: 打开chrome的设置,向下翻&…

docker自建GitLab仓库

摘要 GitLab 是一个功能强大的开源代码托管平台,它不仅提供了代码存储和版本控制的核心功能,还集成了项目管理、CI/CD 流水线、代码审查等企业级特性。本文将指导你如何在自己的服务器上搭建 GitLab 社区版,创建一个完全属于自己的开源仓库&…

##10 卷积神经网络(CNN):深度学习的视觉之眼

文章目录 前言1. CNN的诞生与发展2. CNN的核心概念3. 在PyTorch中构建CNN4. CNN的训练过程5. 应用:使用CNN进行图像分类5. 应用:使用CNN进行时序数据预测代码实例7. 总结与展望前言 在深度学习的领域中,卷积神经网络(CNN)已经成为视觉识别任务的核心技术。自从AlexNet在2…

引入RabbitMQ

前置条件 docker 安装 mq docker run \-e RABBITMQ_DEFAULT_USERdudu \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network hmall \-d \rabbitmq:3.8-management可能会出现:docker: Er…

FPGA+炬力ARM实现VR视频播放器方案

FPGA炬力ARM方案,单个视频源信号,同时驱动两个LCD屏显示,实现3D 沉浸式播放 客户应用:VR视频播放器 主要功能: 1.支持多种格式视频文件播放 2.支持2D/3D 效果实时切换播放 3.支持TF卡/U盘文件播放 4.支持定制化配置…

【机器学习300问】79、Mini-Batch梯度下降法的原理是什么?

Mini-Batch梯度下降法是一种将训练数据集分成小批次进行学习的优化方法,通过这种方式,可以有效地解决内存限制问题并加速学习过程。 一、为什么要使用Mini-Batch? 在机器学习尤其是深度学习中,我们常常面临海量数据处理的问题。如…

内网穿透速度慢

内网穿透速度慢原因及优化策略 在计算机网络应用中,内网穿透是一个常见的需求,它允许外部网络访问位于内部网络(如企业局域网或家庭网络)中的设备或服务。然而,有时用户在进行内网穿透时会遇到速度慢的问题&#xff0…

10大排序方法,其中这里只介绍前7种(第4种C语言,其它C++语言)

排序方法有十种,分别是:一、冒泡排序;二、选择排序;三、插入排序;四、希尔排序;五、归并排序;六、快速排序;七、堆排序;八、计数排序;九、桶排序;…

1011: 二叉排序树的实现和查找

解法: 二叉排序树(Binary Search Tree,简称BST)也被称为二叉搜索树或二叉查找树,是一种重要的二叉树结构,它具有以下性质: 左子树上所有节点的值都小于根节点的值;右子树上所有节点的…

2024粤港澳青少年信息学创新大赛C++知识点汇总和真题训练

2024粤港澳青少年信息学创新大赛C知识点汇总和真题训练 知识汇总 真题训练 程序设计语言C是一种解释性语言。 A.正确 B.错误 Python是一种编译型语言。 A.正确 B.错误 误 RAM(随机存取存储器)是一种易失性存储设备。 A.正确 B.错误 Java…

单节锂电池充电芯片H4054无需外接检测电阻500mA电流7V输入

锂电池充电芯片的主要功能如下: 充电管理功能:充电芯片能够对锂电池进行智能化管理,根据电池的状态和需求,调节充电电流和电压,以实现快速充电、恒流充电、恒压充电等不同的充电模式。通过合理控制充电过程&#xff0…

Selenium定位方法汇总及举例

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

头歌实践教学平台:CG1-v2.0-直线绘制

第1关&#xff1a;直线光栅化-DDA画线算法 一.任务描述 1.本关任务 (1)根据直线DDA算法补全line函数&#xff0c;其中直线斜率0<k<1&#xff1b; (2)当直线方程恰好经过P(x,y)和T(x,y1)的中点M时&#xff0c;统一选取直线上方的T点为显示的像素点。 2.输入 (1)直线两…

接口用例设计方法

一、单接口测试 例如&#xff1a;登录、获取天气等等 1、正向测试&#xff08;也就是正确测试&#xff0c;比如&#xff1a;登录成功&#xff09; 1.必填参数组合 P0 (正确用户名和正确的密码) 2.必填非必填组合 1)全部参数组合 P1 2)其他参数组合 P2/P3 2、…

16【PS Aseprite 作图】图像从Aseprite传输到PS

【内容背景】Aseprite很适合做像素图&#xff0c;有一个“完美像素”的选项&#xff0c;就不用在PS里面慢慢修线&#xff0c;能够省事很多 【具体操作】 勾选完美像素 Aseprite里面的“完美像素”能够减少修线的步骤&#xff0c;在“作图”的时候一定要注意勾选 导出 选择…

Java17 --- SpringCloud之Zipkin链路追踪

目录 一、下载zipkin及运行 二、在父工程中引入pom依赖 三、在子工程8001引入相关pom依赖 3.1、修改yml配置文件 3.2、测试代码 四、在子工程80引入相关pom依赖 4.1、修改yml配置文件 4.2、测试代码 五、测试结果 一、下载zipkin及运行 运行控制台访问地址&#xff1…

LLM大语言模型(十四):LangChain中Tool的不同定义方式,对prompt的影响

背景 ChatGLM3-6B的函数调用功能&#xff0c;和LangChain的Tool调用&#xff0c;在prompt上并没有对齐。 参考&#xff1a;LLM大语言模型&#xff08;十二&#xff09;&#xff1a;关于ChatGLM3-6B不兼容Langchain 的Function Call_error: valueerror: caught exception: unk…

AI编码工具-通义灵码功能实测(二)

AI编码工具-通义灵码功能实测&#xff08;二&#xff09; 通义灵码智能问答 在上一篇文章中&#xff1a;https://blog.csdn.net/csdn565973850/article/details/138563670?spm1001.2014.3001.5501 讲述了通义灵码的7大应用场景&#xff0c;这里在使用过程中遇到了一些问题&…