【PAT_1041】 Be Unique (20)

题目描述

投注一组由[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;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,425评论 0 2
  • 我躺在床上以宁静的口吻说:“小丽,走在去教室的路上,经过林荫大道,望着苍翠的大树,感受着万物生长的美好,我突然想到...
    林丹_26ba阅读 194评论 0 0
  • 大概是自小生在南方,对于雪,总有那么两分期待。 雪,仿佛总是在极冷的夜里,趁月而来。于是那一盏路灯昏黄,映...
    序小匠匠阅读 195评论 0 0