leetcode中如何找到只出现一次的数字
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章主要介绍了leetcode中如何找到只出现一次的数字,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。题目链接https://le
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
丽水嵌入式软件开发费用
网站的文章和数据库
两台mssql同步数据库
采用无线网络技术传输的
数据库EST
网络安全道德教育手抄报
虚拟机上的数据库吗
图书馆特色数据库购买制度
网络技术支持新悦享网络
神通数据库授权查询
2003服务器网络配置
数据库表和视图的差别
几万块钱的服务器里面有什么
网络技术职业介绍图片
小程序数据库安装步骤
web链接数据库的困难
金融软件开发定做
手机网络安全证书在哪允许
化解网络安全风险小结
宜章app软件开发薪资
查看阿里云服务器带宽
数据库密码安全管理
数据库两张表格数据任意相乘
如何下载阿里云服务器上的代码
台州软件开发自学步骤
网络技术基础第一章笔记
pb连接数据库出现unable
厦门博颖网络技术
生僻字入数据库informax
risc服务器多少钱