https://xiaoqijava.blog.csdn.net/article/details/123061058?spm=1001.2014.3001.5502

简介: 当给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次时,如何找出那个只出现了一次的元素?本文带大家解决这个问题。

一、leetcode算法



1、只出现一次的数字


1.1、题目


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


说明:


你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?


示例 1:


输入: [2,2,1]

输出: 1


示例 2:


输入: [4,1,2,1,2]

输出: 4


1.2、思路


思路一:此题我们可以根据异或的特性来结合数据的特点来进行计算,这样我们不会使用额外的空间。


异或的特点:


a和0异或等于a

a和a异或等于0


根据以上特点和数据的特点,我们发现数据中除了只有一个数是只出现一次,剩下的数都出现了两次,也就是说剩下的数都异或等于0,在和最后一个数异或就等于最后一个数。


1.3、答案


11.png

class Solution {
    public int singleNumber(int[] nums) {
        int single = 0;
        for(int num : nums){
            single ^= num;
        }
        return single;
    }
}


复杂度分析


时间复杂度:O(n),其中 n 是数组长度。只需要对数组遍历一次。


空间复杂度:O(1)。


相关文章
|
8月前
https://blog.csdn.net/njpkhuan/article/details/100563673?spm=1001.2014.3001.5502
https://blog.csdn.net/njpkhuan/article/details/100563673?spm=1001.2014.3001.5502
|
6天前
|
C++
【C/C++ 编程 入门篇】 if条件判断表达式的使用教程
https://developer.aliyun.com/article/1465430
22 0
|
6天前
|
Java Unix Linux
https://developer.aliyun.com/article/1495767
https://developer.aliyun.com/article/1495767
|
6天前
|
JSON 前端开发 数据格式
https://tigerhhzz.blog.csdn.net/article/details/129961946?spm=1001.2014.3001.5502
https://tigerhhzz.blog.csdn.net/article/details/129961946?spm=1001.2014.3001.5502
13 0
|
6天前
https://developer.aliyun.com/article/1417518
https://developer.aliyun.com/article/1417518
33 0
|
6天前
|
XML Java 数据格式
javaweb实训第五天下午——xml配置文件约束报错问题
问题描述: 如果电脑连不上网,或者网速不好可能会造成Spring框架中xml配置文件出现错误。但是这个错误不影响项目的运行的;
22 0
|
5月前
|
存储 缓存 算法
计算机原理组成篇 (2)
主存-辅存层次 原理:局部性原理 实现:主存之外增加辅助存储器(磁盘、SD卡、U盘等) 目的:解决主存容量不足的问题
98 0
|
6天前
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
203 0
|
6天前
|
存储 算法 安全
[计算机网络]---Https协议
[计算机网络]---Https协议
|
6天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的