find your present (2)

本文介绍了一种利用异或运算高效查找数组中唯一出现奇数次的元素的方法。通过理解异或的基本性质:一个数异或自身为0,异或0为自身,实现了快速定位目标元素。代码示例展示了如何在C++中实现这一算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意是找出一些数字(奇数个)中出现奇数次得数。看了题解一会才会的,此题涉及到异或,表示有点蒙。
1、一个数异或本身恒等于0,如5^5恒等于0;

2、一个数异或0恒等于本身,如5^0恒等于5。

3 满足交换律

822833885=5; 用来寻找一串数字中唯一odd次出现的数

所以显然用异或运算是很完美的解法
在这里插入图片描述

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    int n,ans,a;
    while(scanf("%d",&n)!=EOF){
        if(n==0)break;
        scanf("%d",&ans);
        for(int i=1;i<n;i++){
            scanf("%d",&a);
            ans^=a;
        }
        printf("%d\n",ans);
    }
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值