题解 | 找x
找x
https://www.nowcoder.com/practice/069e2130430c41229ab25e47fa0949a6
#include<cstdio>
#include<vector>
#include <algorithm>
using namespace std;
int main(){
int n;
while(scanf("%d",&n)!=EOF){
vector<int> vec(n); //动态数组,大小为n
for(int i=0;i<n;i++){ //输入n个数
scanf("%d",&vec[i]);
}
int x;
scanf("%d",&x);
vector<int>::iterator it; //迭代器it用于获取find函数的返回值
//find函数三个参数,起始位置,尾后位置,需要找的元素值;返回的是迭代器
it=find(vec.begin(),vec.end(),x);
if(it==vec.end()){ //若it等于尾后位置说明元素没有找到
printf("-1\n");
}else{ //找到了就返回下标
//it加减数字->偏移 it-vec.begin()得到偏移量就是数组下标
printf("%d\n",it-vec.begin());
}
/*int index; //将下标定义在外面
for(index=0;index<n;index++){
if(vec[index]==x){
printf("%d\n",index);
return 0; //找到就直接退出main函数
}
}
if(index==n){ //出了上面的循环,没有找到x,是由于走到了vector的边界,此时没有一个符合条件
printf("-1\n");
}*/
}
return 0;
}

查看30道真题和解析