题目描述
投注一组由[1,10^4]中的数组成的组成,投注第一个成为唯一数字的数字为胜利者。例如:7个人分别投注为5 31 5 88 67 88 17,投注为31的是胜利者
输入
输入在一行中,第一个数字为N(之后有N个投注),随后N个数为投注的数
输出
输出赢的数字,如果没有赢的数字,就输出None
解题思路
本题实际为从一个数组中选出第一个唯一数字。因此用map来标记数字出现次数,并用结果mark来表示数字出现的次数和索引号。
代码
#include<map>
using namespace std;
struct Marks {
int index, nums;
};
int main() {
int n;
scanf("%d", &n);
map<int, Marks>m;
int t;
for (int i = 0; i < n; i++) {
scanf("%d", &t);
if (m.find(t) != m.end()) {
m[t].nums++;
}
else {
m.insert(pair<int, Marks>(t, { i,1 }));
}
}
map<int , Marks>::iterator it;
it = m.begin();
int minindex = 100000, v;
while (it != m.end()){
if (it->second.nums == 1&&it->second.index<minindex) {
minindex = it->second.index;
v= it->first;
}
it++;
}
if (minindex == 100000)printf("None");
else printf("%d",v);
return 0;
}