计蒜客————单独的数字(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lose__way/article/details/72832676

一个整型数组中有一个元素只出现一次,其它元素都出现两次。求出只出现一次的元素。

要求:

线性时间复杂度,不能使用额外空间。

聪明的你能搞定吗?


格式:

第一行输入数字n,代表有n个数,根据题意,很明显n是奇数,

第二行输入数组A[i], i从0~n-1.

最后输出单独的数字。


样例输入

7
1 3 2 0 3 2 1


这道题的归类是位运算,利用两个相同的值异或为0,来求得唯一不同的值。

#include <iostream>
#include<cstring>
#include<stdio.h>
#include<algorithm>
#include<map>
#define MAX 9223372036854775807
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int com;
        scanf("%d",&com);
        n--;
        while(n--)
        {
            int t;
            cin>>t;
            com=com^t;
        }
        printf("%d\n",com);
    }
    return 0;
}


阅读更多

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