1041 Be Unique (20 分)

 

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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁星蓝雨

如果觉得文章不错,可以请喝咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值