leetcode中如何找到只出现一次的数字
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了leetcode中如何找到只出现一次的数字,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目链接https://le
千家信息网最后更新 2026年11月02日leetcode中如何找到只出现一次的数字
这篇文章主要介绍了leetcode中如何找到只出现一次的数字,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
题目链接
https://leetcode-cn.com/problems/single-number/
题目描述
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
解题方案
思路
标签:位运算
本题根据题意,线性时间复杂度O(n),很容易想到使用Hash映射来进行计算,遍历一次后结束得到结果,但是在空间复杂度上会达到O(n),需要使用较多的额外空间
既满足时间复杂度又满足空间复杂度,就要提到位运算中的异或运算XOR,主要因为异或运算有以下几个特点:
一个数和0做XOR运算等于本身:a⊕0 = a
一个数和其本身做XOR运算等于0:a⊕a = 0
XOR运算满足交换律和结合律:a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b
故而在以上的基础条件上,将所有数字按照顺序做抑或运算,最后剩下的结果即为唯一的数字
时间复杂度:O(n),空间复杂度:O(1)
代码
Java版本
class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for(int num: nums) {
ans ^= num;
}
return ans;
}
}
JavaScript版本
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let ans = 0;
for(const num of nums) {
ans ^= num;
}
return ans;
};
画解

感谢你能够认真阅读完这篇文章,希望小编分享的"leetcode中如何找到只出现一次的数字"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
运算
复杂
复杂度
空间
数字
时间
篇文章
元素
个数
版本
示例
线性
结果
题目
输入
输出
代码
价值
兴趣
同时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州紫鲸互联网科技有限公司
互联网科技深圳
合肥互联网科技公司
中国 科技 互联网
互联网金融科技创新
互联网科技公司有哪些
深圳卡尔迅互联网科技有限公司怎么样
互联网 科技馆
深圳市运趣互联网科技有限公司
北京三清互联网科技
福州新华互联网科技学校 知乎
互联网系的金融科技公司
互联网为啥属于高科技
搜狐科技互联网
互联网金融科技展
互联网时代的科技公司
产业互联网科技服务公司
互联网科技融合创新
10位科技互联网大佬
恒生互联网科技趋势
互联网科技集团
奇酷互联网络科技
上海致骋互联网科技
互联网金融和金融科技
北京三清互联网科技
智腾互联网科技有限公司
企晟互联网信息科技有限公司
互联网方面的科技前沿
九思连强互联网电子科技有限公司
青岛互联网科技园