LeetCode热题100--136. 只出现一次的数字--简单

题目

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

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

示例 1 :

输入:nums = [2,2,1]

输出:1

示例 2 :

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

输出:4

示例 3 :

输入:nums = [1]

输出:1

题解

java 复制代码
class Solution {
    public int singleNumber(int[] nums) {
        int ans = 0;
        for(int num: nums) {
            ans ^= num;
        }
        return ans;
    }
}

解析

出自:画解算法:136. 只出现一次的数字

java 复制代码
class Solution {
    public int singleNumber(int[] nums) {
        // 初始化结果变量 ans 为 0。
        // 因为任何数与 0 异或都等于它本身(a ^ 0 = a),所以 0 是异或运算的"单位元"。
        int ans = 0;
        
        // 遍历数组 nums 中的每一个元素 num
        for(int num: nums) {
            // 将当前数字 num 与 ans 进行异或运算,并将结果存回 ans
            // 利用异或的性质:
            //   1. 相同的数异或为 0:a ^ a = 0
            //   2. 异或满足交换律和结合律
            //   3. 0 ^ a = a
            // 因此,所有出现两次的数字会相互抵消(变成 0),最终只剩下那个只出现一次的数字
            ans ^= num;
        }
        
        // 循环结束后,ans 中保存的就是数组中唯一只出现一次的数字
        return ans;
    }
}
相关推荐
卷福同学22 分钟前
【养虾日记】Openclaw操作浏览器自动化发文
人工智能·后端·算法
春日见1 小时前
如何入门端到端自动驾驶?
linux·人工智能·算法·机器学习·自动驾驶
图图的点云库1 小时前
高斯滤波实现算法
c++·算法·最小二乘法
rainbow7242442 小时前
AI人才简历评估选型:技术面试、代码评审与项目复盘的综合运用方案
人工智能·面试·职场和发展
一叶落4382 小时前
题目:15. 三数之和
c语言·数据结构·算法·leetcode
努力学算法的蒟蒻3 小时前
day115(3.17)——leetcode面试经典150
面试·职场和发展
老鱼说AI3 小时前
CUDA架构与高性能程序设计:异构数据并行计算
开发语言·c++·人工智能·算法·架构·cuda
罗湖老棍子4 小时前
【例 1】数列操作(信息学奥赛一本通- P1535)
数据结构·算法·树状数组·单点修改 区间查询
big_rabbit05024 小时前
[算法][力扣222]完全二叉树的节点个数
数据结构·算法·leetcode
张李浩4 小时前
Leetcode 15三题之和
算法·leetcode·职场和发展