P5718 找最小值
【深基4.例2】找最小值
题目描述
给出 n n n 和 n n n 个整数 a i a_i ai,求这 n n n 个整数中最小值是什么。
输入格式
第一行输入一个正整数 n n n,表示数字个数。
第二行输入 n n n 个非负整数,表示 a 1 , a 2 … a n a_1,a_2 \dots a_n a1,a2…an,以空格隔开。
输出格式
输出一个非负整数,表示这 n n n 个非负整数中的最小值。
样例
样例输入
8
1 9 2 6 0 8 1 7
样例输出
0
提示
数据保证, n ≤ 100 n\le100 n≤100 且 0 ≤ a i ≤ 1000 0\le a_i \le 1000 0≤ai≤1000。
思路
这道题有很多思路,难度也是入门级,我看了下题解区大多是sort排序和逐位比较,所以想用map来解题。
STL Map
Map是STL的一种关联式容器,它的底层是红黑树实现的,它的插入和查询都是log级别的。
map的简单使用
# include <iostream>
# include <string>
# include <map>
using namespace std;
int main(){
map<string,int> dict;//定义一个map
dict["Tom"]=1;//定义映射关系
dict["James"]=3;
dict["Alice"]=5;
if(dict.count(" Alice")){
cout<<"Alice is in class"<<dict["Alice"]<<endl;
}
return 0;
}
从上述代码中可以看出map的一个简单使用,其实还是比较方便的,用于本题的解决方法如下:
题解
#include<bits/stdc++.h>
#include<map>
using namespace std;
int main(){
map<int,int>Dict;
int n;
cin>>n;
for(int i=0;i<n;i++)
{ int tmp;
scanf("%d",&tmp);
Dict[tmp]++;
}
for (int i=0;i<=1000;i++){
if(Dict[i]!=0){
printf("%d",i);
break;
}
}
return 0;
}