题目介绍:

给定一个数组 AA,除了一个数出现一次之外,其余数都出现三次。找出出现一次的数。

如:{1, 2, 1, 2, 1, 2, 7}找出 7。

你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~

输入格式:

第一行输入一个数 n(1≤n≤500),代表数组的长度。

接下来一行输入 n 个 int 范围内(-2147483648…2147483647)的整数,表示数组 A。保证输入的数组合法。

输出格式:

输出一个整数,表示数组中只出现一次的数。

样例输入:

4

0 0 0 5

样例输出:

5

测试地址:测试点击此处

题目分析:

本题可利用map的映射来处理,第一位表示数据,第二位表示出现次数

本题代码:

#include<iostream>
#include<map>//定义map容器的头文件
using namespace std;
int main()
{
    map<int,int> v;//创建map容器
    int n,x;
    cin>>n;
    while(n--)
    {
     	cin>>x;//第一位
        v[x]++;//第二位
    }
    map<int,int>::iterator it;//定义map的迭代器
    for(it=v.begin();it!=v.end();it++)//遍历容器
    {
        if(it->second==1)//找的只出现一次的元素,输出该元素并终止查找
        {
            cout<<it->first<<endl;
            break;
        }
    }
return 0;
}