青少年编程知识记录 codecoming

【题解】二分法查找左边界







参考代码:

# 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;  }



(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:题解目录 浏览: