题目描述:
给出N个数,其中有一个数只出现了一次,找出来。
大致思路:
乍一看这个题目好像很简单,但是实际上还是有点点门路的,500万的数据量,空间限制在3M以内。那么问题来了……3M空间怎么完成500万大小数组的功能,这个时候就有一个神奇的东西了,那就是异或,异或的一个重要性质a^b^b=a。这样这个问题就成功解决了。
题目链接:http://acm.dlut.edu.cn/problem.php?id=1216
代码:
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
int T;
cin>>T;
while (T--) {
int n;
cin>>n;
int t = 0;
for (int i = 0; i < n; i++) {
int tmp;
scanf("%d",&tmp);
t ^= tmp;
}
if (t) cout<<t<<endl;
else cout<<"-1"<<endl;
}
}