找回密码
 立即注册

QQ登录

只需一步,快速开始

工控课堂 首页 工控文库 上位机编程 查看内容

LeetCode题目136:只出现一次的数字

2022-4-15 20:59| 发布者: 198366809| 查看: 685| 评论: 0|来自: 算法集市(头条)

摘要: 1、题目136给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例:输入: 输出: 52、求解语言:C++这道题主要需要灵活运用异或运算。异或运算:按位异或运 ...

LeetCode题目136:只出现一次的数字

1、题目136

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

示例:

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

输出: 5

2、求解

语言:C++

这道题主要需要灵活运用 异或运算

LeetCode题目136:只出现一次的数字

异或运算:按位异或运算,相同为0,不同为1。即:

0 ^ 0 = 0

0 ^ 1 = 1

1 ^ 0 = 1

1 ^ 1 = 0

异或运算的性质:

A ^ 0 = A

A ^ A = 0

A ^ B = B ^ A

A ^ B ^ C = (A ^ B) ^ C = A ^ (B ^ C)

A ^ B ^ A = B

异或运算 有交换律定理,相当于将相同的数字先异或,结果为0,然后 0 和只出现一次的数字异,得到的结果就是这个数字。

代码如下:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        for (int i = 1; i < nums.size(); i++) {
            nums[0] ^= nums[i];
        }
        
        return nums[0];
    }
};
关注公众号,加入500人微信群,下载100G免费资料!

最新评论

热门文章
关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 21:01 , Processed in 0.378259 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部