A1041 Be Unique
Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a number chosen from [1,104]. The first one who bets on a unique number wins. For example, if there are 7 people betting on { 5 31 5 88 67 88 17 }, then the second one who bets on 31 wins.
Input Specification:
Each input file contains one test case. Each case contains a line which begins with a positive integer N (≤105) and then followed by N bets. The numbers are separated by a space.
Output Specification:
For each test case, print the winning number in a line. If there is no winner, print None
instead.
Sample Input 1:
7 5 31 5 88 67 88 17
结尾无空行
Sample Output 1:
31
结尾无空行
Sample Input 2:
5 888 666 666 888 888
结尾无空行
Sample Output 2:
None
结尾无空行
如果双层嵌套循环的话,时间复杂度为O(n^2),又有一个测试点因为超时而无法通过,如果用HashTable的话可以极大地降低时间复杂度
代码如下:
#include<cstdio>
int HashTable[100010]={0};
int main(){
int n;
scanf("%d",&n);
int in[n];
int ans=-1;
for(int i=0;i<n;i++){
scanf("%d",&in[i]);
HashTable[in[i]]++;//如果只出现一次那就是1,如果出现重复的就++
}
for(int i=0;i<n;i++){
if(HashTable[in[i]]==1){//没有重复值
ans=in[i];
break;
}
}
if(ans<0) printf("None");
else printf("%d",ans);
return 0;
}