1041 Be Unique (20 分)

版权声明:如果喜欢的话,请点击一波关注把,谢谢你,么么哒!转载留名即可 ^_^ https://blog.csdn.net/qq_33375598/article/details/88070227

 

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,10​4​​]. 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 (≤10​5​​) 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

参考代码:

#include<cstdio>
#include<cstring>
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:

#include<cstdio>
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;
}

 

没有更多推荐了,返回首页