写这道题的时候,不会写看了题解,题解跟我差不多,但就是一个
mid=l+(l+r)/2(大佬代码)
mid=1+(l+r)/2(我的代码)
为什么我的代码会死循环,而大佬不会
下面是我的AC代码
#include<cstdio>
using namespace std;
int n,m,a[1000005];
int find(int x){
int l=1,r=n;
int mid;
while(l<r){
mid=l+(r-l)/2;
if(a[mid]>=x) r=mid;
else{
l=mid+1;
}
}
if(a[l]==x){
return l;
}
else return -1;
}
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
int q;
for(int i=1;i<=m;i++){
scanf("%d",&q);
printf("%d ",find(q));
}
return 0;
}