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

题目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;
    }
};
相关推荐
happyprince2 分钟前
01-整体观-Codex全貌解读(源码)
算法·ai编程
俊基科技24 分钟前
别自己写算法了,让这颗37.5毫米的模组替你“闭嘴干活”
神经网络·算法·硬件开发·ai降噪·语音模块·回音消除
qq_5137280431 分钟前
StaleElementReferenceException(陈旧元素引用异常)
python
千里码aicood36 分钟前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
莫得感情 o1 小时前
并发 14 · 收官:虚拟线程与结构化并发
java·并发
_Narcissus_1 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
聚美智数1 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
战略性的菠萝1 小时前
研究生基础-Python快速入门(终)——面向对象
python
陈皮波比茶1 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人