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用两个数组也可以实现

 

 

posted @ 2018-03-06 15:25  lan126  阅读(97)  评论(0编辑  收藏  举报