【朝花夕拾】bit操作之拯救单身狗

该博客来源于一到LitCode题目
https://leetcode-cn.com/problems/single-number/
题目详情

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

作为一只单身狗,看到这种题目脑海中浮现的就是在一群情侣中有一只被包围的可怜的单身狗,它深受毒害,被迫吃狗粮吃到吐。我们今天的任务就是拯救这一只单身狗,消灭其中的情侣们!

如何消灭他们呢?
我们利用bit运算中的异或运算的一个特性来实现它。

在二进制运算中异或我们用^表示
则异或的一条性质为
A ^ A = 0
A ^ 0 = A
加上异或运算的结合律即
A ^ B ^ C = A ^ (B ^ C)
这个特性完美契合了我们的需求,相同数字的情侣们都会被消除为0,只有一个单身狗被留下来。

原理我们都懂了,下面我们来上代码

int singleNumber(vector<int>& nums) {
    int result = 0;
    for(int i = 0; i < nums.size(); i++) {
        result ^= nums[i];
    }
    return result;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值