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

题目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 = 2 , res = 0 ^ 2 = 2

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

  3. 第三轮循环,num = 1 ,res = 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;
    }
};
相关推荐
字节跳动的猫7 分钟前
LikeShop 积分体系全链路改造:获取规则、订单抵扣与积分商品兑换二开
运维·数据结构
可乐ea10 分钟前
AI Agent 工具调用准确性评测:选择错误与参数错误分开测
大数据·人工智能·算法·大模型·工具调用·ai智能体·agent评测
上位机妹子32 分钟前
C 语言 数组删除指定元素(快慢指针法)
c语言·数据结构·算法
心中有你021435 分钟前
【路径规划】A*寻路算法最通俗易懂讲解(C语言完整实现+详细注释)
c语言·开发语言·算法
老歌老听老掉牙1 小时前
斜抛运动问题分析:给定最大高度与墙面位置的轨迹与时间求解
python·斜抛运动
言乐61 小时前
Python自动去除水印
开发语言·python·django·virtualenv·pygame
czq_26867194871 小时前
Python打卡第31天
开发语言·python
invicinble1 小时前
python 编程语言 认识维度
开发语言·数据库·python
AC赳赳老秦1 小时前
数据采集全链路审计留痕:用 OpenClaw 实现合规审计与追溯
开发语言·汇编·python·php·swift·deepseek·openclaw
张铁霖1 小时前
深度解析:AI三次浪潮与机器学习三种范式,
python