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
参考代码:
const int maxn = 100010;
int hashTable[maxn],temp[maxn];
//hashTbale建立数字到数字出现数量的映射,temp按顺序存储输入的数字
int main(int argc, char const *argv[])
{
memset(hashTable, 0, sizeof(hashTable));//将所有数字出现的次数置为0
int n;
scanf("%d", &n);
int count = 0;
for (int i = 0; i < n; ++i)
{
int num;
scanf("%d", &num);
hashTable[num]++; //出现一次该数的出现次数加1
temp[count++] = num; //按顺序存储出现的数字
}
bool isPrintf = false; //记录是否已经输出了数字
for (int i = 0; i < n; ++i) //按顺序查询第一独立出现的数字
{
if(hashTable[temp[i]] == 1){
printf("%d\n", temp[i]);
isPrintf = true;
break; //如果已经输出了 就结束
}
}
if(isPrintf == false){
printf("None\n");
}
return 0;
}
参考代码2:
const int maxn = 100010;
int hashTable[maxn] = {0},A[maxn];//第一个位散列数组,第二个位输入数字
int main(int argc, char const *argv[])
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; ++i)
{
scanf("%d", &A[i]);//当前输入的数位A[i]
hashTable[A[i]]++; //数字A[i]出现的次数加1
}
int ans = -1;
for (int i = 0; i < n; ++i)
{
if(hashTable[A[i]] == 1){//如果A[i]只出现一次
ans = A[i]; //答案就是A[i],退出循环
break;
}
}
if(ans == -1) printf("None\n");//找不到只出现一次的数,输出None
else printf("%d\n", ans);
return 0;
}