【刷题笔记9.24】LeetCode:只出现一次的数字

news2025/2/24 8:26:26

LeetCode:只出现一次的数字

一、题目描述

给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
在这里插入图片描述

二、分析

如果不考虑时间复杂度和空间复杂度的限制,这道题有很多种解法(我个人想到使用的是HashMap存储)

对于这道题,可使用异或运算 ⊕。异或运算有以下三个性质。

  • 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0=a
  • 任何数和其自身做异或运算,结果是 0,即 a⊕a=0
  • 异或运算满足交换律和结合律,即 a⊕b⊕a = b⊕a⊕a = b⊕(a⊕a) = b⊕0 = b。

三、上代码

方法一:(使用HashMap存储key为元素x,value为次数)

public int singleNumber(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int x : nums) {
            if (map.containsKey(x)) {
                int value  = map.get(x) + 1;
                map.put(x, value);
            } else {
                map.put(x, 1);
            }
        }

        for (int x : map.keySet()) {
            if (map.get(x) == 1) {
                return x;
            }
        }
        return -1;
    }

方法二:使用异或

  • a ^ a = 0;
  • 0 ^ a = a;
public int deal(int[] nums) {
        int single = 0;

        for (int x : nums) {
            single ^= x;
        }
        return single;
    }

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

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

相关文章

ImportError: Java package ‘edu‘ not found, requested by alias ‘edu‘

参考issue&#xff1a; https://github.com/ncbi-nlp/NegBio/issues/44 我目前的解决办法 pip uninstall jpype1 -y可以成功运行。

CCNP-OSPFv3

现在在企业中&#xff0c;用的IPv4居多&#xff0c;在我们的手机上&#xff0c;数据中心&#xff0c;运营商以及一些大企业用的都是IPv6&#xff1b; 为啥用IPv6啊&#xff0c;因为IPv4地址不够用&#xff0c;IPv4地址只有32bit&#xff0c;而IPv6足足有128bit&#xff1b; 那…

【23-24 秋学期】 NNDL 作业2

习题2-1 分析为什么平方损失函数不适用于分类问题&#xff0c;交叉熵损失函数不适用于回归问题 平方损失函数 平方损失函数&#xff08;Quadratic Loss Function&#xff09;经常用在预测标签&#x1d466;为实数值的任务中 表达式为&#xff1a; 交叉熵损失函数 交叉熵损失函…

RGB-D转3D点云原理及实现代码

在图像处理和计算机视觉领域&#xff0c;RGBD 是指结合图像颜色和深度信息的数据格式。文本介绍如何使用Python将RGBD数据转换为3D点云&#xff0c;可以使用 NSDT 3DConvert 在线查看3D点云或者进行格式转换&#xff1a; 1、RGBD 颜色深度 缩写 RGB 代表三基色通道&#xf…

Unity中Shader用到的向量的乘积

文章目录 前言一、向量的乘法1、点积2、差积 二、点积&#xff08;结果是一个标量&#xff09;1、数学表示法2、几何表示法 三、叉积1、向量叉积的结果 与 两个相乘的向量互相垂直2、判断结果正负方向的方法&#xff1a;右手法则 前言 Unity中Shader用到的向量的点积 一、向量…

华为OD机试 - 最小传输时延 - 深度优先搜索DFS(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明计算源节点1到目的节点5&#xff0c;符合要求的时延集合 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&…

Gnomon绑定基础(约束 IK 节点)

点约束 方向约束 父约束 目标约束 修改后 对象方向 IK控制柄 直的骨骼&#xff0c;指定IK怎么弯曲 直的骨骼&#xff0c;指定IK怎么弯曲 样条曲线 数学节点 乘除节点 混合节点 注意

免杀对抗-无文件落地分离拆分-文本提取+加载器分离+参数协议化+图片隐写

无文件落地&分离拆分 无文件落地&分离拆分其实就是内存免杀&#xff0c;内存免杀是将shellcode直接加载进内存&#xff0c;由于没有文件落地&#xff0c;因此可以绕过文件扫描策略的查杀。为了使内存免杀的效果更好&#xff0c;在申请内存时一般采用渐进式申请一块可读…

Mysql数据库SQL语句与管理

Mysql数据库基本语句与管理 1、常用的数据类型2、数据库管理3、SQL语句3.1语言分类3.2sql语句 4、DQL查询数据记录4.1查询4.2修改4.3删除4.4alter修改 5、总结 1、常用的数据类型 数据类型 &#xff08;1&#xff09;int&#xff1a;整型 用于定义整数类型的数据 &#xff08;…

使用Spring Boot和MyBatis访问数据库

使用Spring Boot和MyBatis访问数据库 Spring Boot和MyBatis是Java开发中非常流行的框架&#xff0c;它们可以帮助你轻松地构建和管理数据库应用程序。本文将介绍如何使用Spring Boot和MyBatis访问数据库&#xff0c;并提供示例代码以帮助你入门。 准备工作 在开始之前&#x…

什么是FMEA(失效模式和影响分析)?

失效模式和影响分析&#xff08;FMEA&#xff09;是一个在开发阶段&#xff0c;用于确定产品或流程可能的风险和失败点的有条理的过程。FMEA团队会研究失效模式&#xff0c;也就是产品或流程中可能出错的地方&#xff0c;以及这些失效可能带来的影响&#xff08;如风险、损害、…

小程序如何关联公众号来发送模板消息

有时候我们可能需要通过公众号来发送一些小程序的服务通知&#xff0c;比如订单提醒、活动通知等。那么要如何操作呢&#xff1f; 1. 有一个通过了微信认证的服务号。需要确保小程序和公众号是同一个主体的。也就是说&#xff0c;小程序和公众号应该都是属于同一个企业。如果还…

当下IT测试技术员的求职困境

从去年被裁到现在&#xff0c;自由职业的我已经有一年没有按部就班打卡上班了。期间也面试了一些岗位&#xff0c;有首轮就挂的&#xff0c;也有顺利到谈薪阶段最后拿了offer的&#xff0c;不过最后选择了拒绝。 基于自己近一年的面试求职经历&#xff0c;我想聊聊当下大家在求…

博弈论——反应函数

反应函数 1 引言 谢老师的《经济博弈论》书中对反应函数并没有给出一般笼统的定义&#xff0c;而是将其应用与古诺模型并给出了相关解释&#xff1a;反应函数是指在无限策略的古诺博弈模型中&#xff0c;博弈方的策略有无限多种&#xff0c;因此各个博弈方的最佳对策也有无限…

双向认证配置

1.Linux准备环境 openssl 使用openssl version查看openssl版本&#xff0c;如果没有安转openssl&#xff0c;可以执行 yum install openssl 安装 nginx 我们使用nginx来进行https的双向认证&#xff0c;首先我们需要安装nginx并附带SSL 模块 详细的安装过程可以查看 Linux安装n…

Arrays的用法(常见方法的使用)

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 常见算法的API&#xff08;Arrays&#xff…

Cookie和Session的作用

最近学习Session和Cookie的总结&#xff0c;我发现好多做测试的朋友对这个的理解不是那么透彻&#xff1b;如果理解了Cookie和session的原理和使用&#xff0c;在我们的测试工作中&#xff0c;有很大的帮助&#xff1b;尤其是在接口测试&#xff0c;性能测试中。。。 目录 一、…

报错注入

1.原理 2.注入手法

tomcat线程模型

NioEndpoint组件 Tomcat的NioEndpoint实现了I/O多路复用模型。 工作流程 Java的多路复用器的使用&#xff1a; 创建一个Selector&#xff0c;在其上注册感兴趣的事件&#xff0c;然后调用select方法&#xff0c;等待感兴趣的事情发生感兴趣的事情发生了&#xff0c;比如可读…