一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。(使用位运算)

这道题的核心思想就是一个数异或另外一个数两次,结果不变。

#include<stdio.h>
void check(int* arr, int sz)
{
    int i = 0;
    int a = 0;
    for (i = 0; i < sz; i++)
    {
        a = a^arr[i];
    }
    printf("不成对出现的数字是:%d\n", a);
}
int main()
{
    int arr[] = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    check(arr, sz);
    system("pause");
    return 0;
}
阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页