描述
百度是喵哈哈村的赞助商,所以百度派出了嘟嘟熊给大家展现魔法:
“恨不得挂长绳于青天,柔此西飞之白日”。
只见刹那间,嘟嘟熊就从兜里面掏出了一堆数字,这一堆数字仿佛有了生命,不停的在空气中跃动。
嘟嘟熊作为魔法大师!他想提问,这些数字中,有很多数都出现了恰好三次,仅仅只有一个数出现了一次,请你快速找出这个只出现一次的数!
输入
本题包含若干组测试数组。
每组测试数据:
第一行一个n,表示有n个数。
第二行n个整数a[i]。
满足:1<=n<=100000,且满足里面仅仅有一个数出现一次,而其他数都恰好出现三次,0<=a[i]<=100000。
输出
输出仅仅输出答案即可,不需要空格 。
样例输入1
7
2 3 2 2 1 1 1
1
5
样例输出1
3
5
A :
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int a[maxn], num[maxn];
int main() {
int n;
while (cin>>n) {
memset(num, 0 , sizeof(num)); // 每组数据初始化
for (int i = 0; i < n; ++i) {
cin >> a[i];
++num[a[i]];
}
for (int i = 0; i < n; ++i) {
if (num[a[i]] == 1) cout<<a[i]<<endl;
}
}
return 0;
}
O(1)空间复杂度,O(n)时间复杂度的做法 : 构造一个函数f(x)^3=1