1041. Be Unique (20)

Posted lan126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1041. Be Unique (20)相关的知识,希望对你有一定的参考价值。

 距离PAT考试还有12天最重要的是做透每一题

 

(1)思路

用map创建一个hash表,遍历一遍数据将key和对应的value填入

注意第一次没有找到时,是设置为1,m[temp]=1不是零

顺便把各个值压入vector中,这一步是因为map插入后是根据key值排序了的,所以要记录顺序

最后再遍历一遍数组一旦找到value为1的值就退出循环并打印,若没有找到就打印None

 

这里用到了map容器

可以用count()方法和find()方法分别找是否有某一个key值

map也可以通过迭代器迭代

#include <cstdio>
#include <map>
#include <vector>
using namespace std;

int main() {
  int n;
  scanf("%d",&n);
  map<int,int> m;
  vector<int> v;
  for(int i=0;i<n;i++) {
    int temp;
    scanf("%d",&temp);
    v.push_back(temp);
    if(m.find(temp) == m.end()) {
      m[temp]=1;
    } else {
      m[temp]++;
    }
  }
  int win=0;
  for(int i=0;i<n;i++) {
    if(m[v[i]] == 1){
      win=v[i];
      break;
    }
  }
  win==0? printf("None"):printf("%d",win);
  return 0;
}

当然这里不用map用两个数组也可以实现

 

 

以上是关于1041. Be Unique (20)的主要内容,如果未能解决你的问题,请参考以下文章

A1041 Be Unique (20 分)

1041. Be Unique (20)

1041 Be Unique (20)

PAT甲级1041 Be Unique (20 分)(多重集)

PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)

PAT Advanced 1041 Be Unique (20分)