【题解】二分法查找左边界
参考代码:
# include <bits/stdc++.h>
using namespace std;
int a[100005];
int n,m,x; //数组大小,要查找的数大小,每次要查找的数
int main()
{
// freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>m;
while(m--){
cin>>x;
int index=lower_bound(a+1,a+n+1,x)-a; //查找第一个大于等于m的位置
if(index==n+1){
//没找到输出-1
cout<<-1<<" ";
}else if(a[index]==x){
//找到了,输出位置
cout<<index<<" ";
}else{
//第一个大于但是不等于的情况也输出-1
cout<<-1<<" ";
}
}
return 0;
}扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。