当前位置: 代码迷 >> 综合 >> 1041 Be Unique (20 分) 题解
  详细解决方案

1041 Be Unique (20 分) 题解

热度:31   发布时间:2023-12-14 23:19:49.0

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

题目的意思就是输出第一个不重复元素,这个其实很简单,我的第一版代码完全可以实现这个要求,但是最下面的两个测试点超时了,所以不能直接用两个for循环来对重复元素进行计数,后来看了看别人的博客,其实就是在我原来的基础上改了一下,变成了一个简单的hash表,题目输入的为key,重复次数为value,两个vector就能实现,代码也很简单,就不赘述了。

#include<iostream>
#include<vector>
using namespace std;
int main()
{int n;cin >> n;vector<int> arr1,arr2(100000);for (int i = 0; i < 100000; i++){arr2[i] = 0;}for (int i = 0; i < n; i++){int temp;cin >> temp;arr1.push_back(temp);arr2[temp]++;}int flag = 0;for (int i = 0; i < arr1.size(); i++){if (arr2[arr1[i]] == 1){cout << arr1[i];flag++;break;}}if (flag == 0){cout << "None";}system("pause");
}

 

  相关解决方案