比赛题目
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
分数:100
描述
给定一个升序排列的整数数组 nums
和一个目标整数 target
,请你在数组中找到目标值。如果目标值存在返回其索引,否则返回 -1
。
保证数组中元素不会重复。
输入描述
第一行输入一个整数 n(1≤n≤105),表示数组 nums
的长度。
第二行输入 n 个整数 numi(−109≤numi≤109)。
第三行输入一个整数 target
(−109≤target≤109) 。
输出描述
输出一个整数,表示 target
在数组中的下标 index
,如果不存在,输出 -1
。
用例输入
5 1 2 3 4 5 3
用例输出 1
3
用例输入 2
5 -3 -1 0 1 3 5
用例输出 2
-1
代码:
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int bfind(int L,int R,int y){
while(L<=R){
int mid=(L+R)/2;
if(a[mid]==y){
return mid;
}
else if(a[mid]>y){
R=mid-1;
}
else{
L=mid+1;
}
}
return -1;
}
int main(){
int m,n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>x;
int k=bfind(1,n,x);
cout<<k;
return 0;
}