查找特定的值
题目描述
在一个序列(下标从1开始)中查找一个给定的值,输出这个数字第一次出现的位置。
输入描述
输入3行,
第1行包含一个正整数n,表示序列中元素个数。1<=n<=10000。
第2行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。
第3行包含一个整数xx,为需要查找的特定值。xx的绝对值不超过10000。
输出描述
输出1行,若序列中存在xx,输出xx第一次出现的下标;否则输出-1。
样例1
输入
5 2 3 6 7 3 3
输出
2
错误示范!!!
//查找特定的值
//Author:fishing_liver diaoyudegan
#include<bits/stdc++.h>
using namespace std;
//注意边界要大一点
int a[10005];
int main(){int n;cin>>n;//这道题主要考察的就是输入部分for(int i=1;i<=n;i++){int x;cin>>x;//用哈希算法来解,当然别的也可以//注意!!!这里标记过和没标记过别搞混了,本人第一次就错了if(a[x]!=0)//如果说当前元素被标记过{continue;//继续输入}else//若当前元素被标记过{a[x]=i;//标记该元素第一次被发现的时候}}int x;cin>>x;//这里需要注意特判一下序列中是否存在该元素if(a[x]==0)//不存在?{cout<<-1;//其实也可以初始memset所有元素为-1return 0;}else//存在{cout<<a[x]; }return 0;
}
我忘记了一个点,有可能是负数啊qwq,数组下标不可以是负数awa!!!
好吧,既然是思路错误,就只能重写了……
听说点关注长命百岁awa~
好吧
正确示例
#include<bits/stdc++.h>
using namespace std;
int a[10005];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int x;cin>>x;for(int i=1;i<=n;i++){if(a[i]==x){cout<<i;return 0;}}cout<<-1;return 0;
}
ok,本期博文正式竣工!
诚邀壶三,(私我)