题解
2024-11-22 19:51:12
发布于:江苏
36阅读
0回复
0点赞
#include<iostream>
using namespace std;
int a[100005]; //用来存放n个数字
int main(){
int n, m; //n代表数字的数量 , m代表询问的次数
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
while(m--){
int num , idx = -1 ;
cin>>num;
//二分查找 : 一定要时刻注意自己的 左边界和右边界
int left = 1;
int right = n;
while(left<=right)
{
int mid = (left+right+1)/2;
//找到正确位置了
if(a[mid] == num )
{
idx = mid;
break;
}
if( a[mid] > num) right = mid-1;
if( a[mid] < num) left = mid+1;
}
cout<<idx <<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个