1041 Be Unique (20分)
题目链接:PAT A 1041
题目大意:给出一个数n,然后给出n个数,要求输出这些数里第一个无重复的数,如果不存在这样的数,则输出None。
思路分析:超级简单的一道题,直接用map解决即可。把每个数作为map的键,每输入一个数,键对应的值加一,最后从数组中第一个数开始遍历,输出第一个map值为1的元素,并且直接return 0。如果程序到了for循环之外,说明所有数都重复,则直接输出None。
AC代码:
#include<iostream>
#include<vector>
#include<map>
using namespace std;
int main() {
int n;
scanf("%d", &n);
vector<int> v(n);
map<int, int> m;
for(int i = 0; i < n; i++) {
scanf("%d", &v[i]);
m[v[i]]++;
}
for(int i = 0; i < n; i++) {
if(m[v[i]] == 1) { //无重复的数
printf("%d", v[i]);
return 0;
}
}
printf("None"); //不存在无重复的数
return 0;
}