1. 程式人生 > >PAT1041 Be Unique (20 分)

PAT1041 Be Unique (20 分)

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, 1 0 4

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 (≤ 1

0 5 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




解析

找第一個unique的數字。最簡單的方法:開一個arr[ 1 0 4 + 1 10^4+1 ]的數字。把每個數字出現的次數+1。
最後就挨個遍歷輸入的數字:看出現的次數是不是1.

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
	int N;
	scanf("%d", &N);
	vector<int> data(N,0);
	for (int i = 0; i < N; i++) 
		scanf("%d", &data[i]);
	map<int, int> Map;
	for (auto x : data)
		Map[x]++;
	vector<int> Unique;
	for (auto x : Map) {
		if (x.second == 1)
			Unique.push_back(x.first);
	}
	if (Unique.empty())
		printf("None");
	else {
		for (auto& x : Unique)
			x = find(data.cbegin(), data.cend(), x) - data.cbegin();
		printf("%d", data[*min_element(Unique.cbegin(), Unique.cend())]);
	}
}