二分查找 题解 100% AC
2025-07-23 09:58:04
发布于:江苏
8阅读
0回复
0点赞
lower_bound:
#include <bits/stdc++.h>
long long a[100010];
using namespace std;
int main(){
long long n,t;cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>t;
long long ans=lower_bound(a+1,a+n+1,t)-a;
if(a[ans]!=t) cout<<-1;
else cout<<ans;
return 0;
}
普通二分:
#include <bits/stdc++.h>
long long a[100010];
using namespace std;
int main(){
long long n,t;cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>t;
long long l=1,r=n;
while(l<=r){
long long mid=(l+r)/2;
if(a[mid]==t){
cout<<mid;
return 0;
}else if(a[mid]>t) r=mid-1;
else l=mid+1;
}
cout<<"-1";
return 0;
}
这里空空如也
有帮助,赞一个