PAT1041: Be Unique

Posted 0kk470

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT1041: Be Unique相关的知识,希望对你有一定的参考价值。

1041. Be Unique (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

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

思路
1084差不多的思路,队列q记录顺序,字典dic记录是否重复出现。遍历q的时候查下字典,输出第一个满足"仅出现一次"的数字即可。
代码
#include<iostream>
#include<map>
#include<iterator>
#include<queue>
using namespace std;
int main()
{
   int N;
   while(cin >> N)
   {
       map<int,int> dic;
       queue<int> q;
       for(int i = 0;i < N;i++)
       {
           int value;
           cin >> value;
           if(dic.count(value) > 0)
             dic[value] = -1;
           else
           {
              q.push(value);
              dic.insert(pair<int,int>(value,1));
           }
       }

       bool check = false;
       while(!q.empty())
       {
           if(dic[q.front()] > 0)
           {
             check = true;
             cout << q.front();
             break;
           }
           q.pop();
       }
       if(!check)
         cout << "None" << endl;
   }
}

 

 

以上是关于PAT1041: Be Unique的主要内容,如果未能解决你的问题,请参考以下文章

pat(A)1041. Be Unique(哈希)

pat 1041 Be Unique(20 分)

PAT 甲级 1041 Be Unique

PAT甲级1041 Be Unique (20 分)(多重集)

PAT Advanced 1041 Be Unique (20分)

PAT Advanced 1041 Be Unique (20 分)