只出现一次的数字

简介: 只出现一次的数字

题目

题目:只出现一次的数字


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


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


示例 1:


输入: [2,2,1]

输出: 1


示例 2:


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

输出: 4


题解:


本题可以直接使用异或(^,相同为0,不同为1)去解决,先说方案,异或数组中的所有数,最后剩下的就是只出现一次的数


分析:


a^a = 0 0^b = b ,所以 a^a ^ b = b


拿个数举例子:


3 ^ 3 = 0011^0011 = 0000 = 0


0 ^ 2 = 0000^0010 = 0010 = 2


所以 3^3 ^2 = 2


最后所有出现偶数次的数异或后都成0了,0在和出现一次的(其实出现奇数次也是一样)异或,得到的就是我们要的那个数了


代码:


class Solution {
    public int singleNumber(int[] nums) {
        //用异或 ,因为 a^b^a = b 
        int res = 0;
        for (int num : nums) {
            //所以
            res ^= num;
        }
        return res;
    }
}


以上就是只出现一次的数字【LeetCode】的全部内容

相关文章
|
6月前
|
算法 前端开发
619. 只出现一次的最大数字
619. 只出现一次的最大数字
67 0
|
1月前
|
BI
求数字
【10月更文挑战第3天】求数字。
32 1
|
17天前
使用数字
【10月更文挑战第25天】使用数字。
15 6
|
17天前
倒三角形数字
【10月更文挑战第25天】倒三角形数字。
26 3
|
6月前
|
存储 算法 C++
c++数字
c++数字
28 1
|
5月前
|
人工智能 安全 算法
数字文盲
在数字时代,避免边缘化的关键是正视挑战、持续学习数字技能、关注伦理安全和推广数字素养教育。从基础操作到数据分析,提升数字素养能帮助我们适应变革,同时保护隐私和安全,确保在科技发展中不落伍,共建包容的数字社会。
|
6月前
|
算法 C++
只出现一次的数字(C++)
只出现一次的数字(C++)
37 0
137. 只出现一次的数字 II
137. 只出现一次的数字 II
54 0
|
编解码 人工智能 自然语言处理
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
SIGGRAPH2023|DreamFace:一句话生成 3D 数字人?
186 0