题目介绍:
给定一个数组 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;
}