巧用异或找出唯一数字(多解)

题目LeetCode136

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

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

示例

**输入:**nums = 2,2,1

**输出:**1

Python解法

代码示例(位运算)

python 复制代码
class Solution:
    def singleNumber(self, nums: List[int]) -> int:

        res = 0

        for num in nums:
            res = res ^ num

        return res

代码解释

异或运算规则:

a ^ a = 0(相同数字异或为 0)

a ^ 0 = a(数字和 0 异或等于自身)

满足交换律、结合律,运算顺序不影响结果

res ^= num 是复合赋值运算符,等同于 res = res ^ num。

示例 1:nums = 2, 2, 1

初始状态:res = 0

  1. 第一轮循环,num = 2res = 0 ^ 2 = 2

  2. 第二轮循环,num = 2res = 2 ^ 2 = 0 两个相同数字抵消,结果变回 0

  3. 第三轮循环,num = 1res = 0 ^ 1 = 1

循环结束,返回 1,就是答案。

过程展示

Java解法

代码示例(位运算)

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

C++解法

代码示例(位运算)

cpp 复制代码
class Solution{
public:
    int singleNumber(vector<int>& nums){
        int res = 0;
        for(int num: nums){
            res = res ^ num;
        }
        return res;
    }
};
相关推荐
caishenzhibiao5 分钟前
期货先行者主图 同花顺期货通指标
java·c语言·c#
幻想时空20 分钟前
地图数据采集
python
梦想不只是梦与想20 分钟前
Python 中的类型判断方法
python·type·isinstance
史呆芬29 分钟前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud
可编程芯片开发31 分钟前
基于PI控制算法的pwm直流电机控制系统Simulink建模与仿真
算法
IT界的老黄牛34 分钟前
限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
java·rocketmq·redisson·令牌桶·削峰·分布式限流
怕浪猫1 小时前
2840亿参数只卖白菜价:DeepSeek V4 Flash 正式版上线,Agent 能力暴涨6倍
人工智能·算法
让学习成为一种生活方式1 小时前
苄基异喹啉生物碱糖基转移酶UGT74AN1晶体--Journal of Agricultural and Food Chemistry
人工智能·算法
alphaTao1 小时前
LeetCode 每日一题 2026/7/27-2026/8/2
python·算法·leetcode
三克的油1 小时前
数据结构-4
数据结构