T146072 找重复数字
题目描述:
思路:
①:查找重复出现的元素,用set的count函数最最快了,但是这里可能会超时,遍历输入为O(N)加上count函数为O(logN)总时间复杂度为O(NlogN)。此时不能再用set的count函数判断重复的元素了。
②:使用一个数组用来标记出现过的元素,初始化为0,出现过的元素就标记为1
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1E7+5;
int book[N];
int main()
{
set<int>s;
int n,ans;
scanf("%d",&n);
for(int i=1;i<=n+1;i++){
int x;
scanf("%d",&x);
if(book[x]==1) {
printf("%d",x);
return 0;
}
book[x]=1;
}
return 0;
}