1041. Be Unique (20)

来源:互联网 发布:淘宝分享有礼口令软件 编辑:程序博客网 时间:2024/06/05 06:32

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
#include<iostream>#include<vector>using namespace std;int main(){int N, num;vector<int>vec;int res = 0;scanf("%d",&N);for (int i = 0; i < N; ++i){scanf("%d",&num);vec.push_back(num);}for (int i = 0; i < vec.size(); ++i){int j = 0;for (j = 0; j < vec.size(); ++j){if (i == j)continue;if (vec[i] == vec[j]){break;}}if (j == vec.size()){res = vec[i];break;}}if (res!=0)printf("%d", res);elseprintf("%s","None");}


上面的代码还有两个小测试点是超时的,也就是还有优化的空间. 通过加入一个辅助的set,记录下检测过的已经重复的元素,然后再检测当前元素之前进行一个判断,看当前元素是属于辅助的set,也就是说不进行相同元素的重新检测,因此问题得到的优化,测试全部通过.
#include<iostream>#include<vector>#include<set>using namespace std;int main(){int N, num;vector<int>vec;set<int> s;int res = 0;scanf("%d", &N);for (int i = 0; i < N; ++i){scanf("%d", &num);vec.push_back(num);}for (int i = 0; i < vec.size(); ++i){set<int>::iterator s_it = s.find(vec[i]);if (s_it != s.end())continue;int j = 0;for (j = i+1; j < vec.size(); ++j){if (vec[i] == vec[j]){s.insert(vec[i]);break;}}if (j == vec.size()){res = vec[i];break;}}if (res != 0)printf("%d", res);elseprintf("%s", "None");}


0 0
原创粉丝点击