二分写法
2025-10-10 20:45:59
发布于:广东
11阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a[n];
for(int i = 0;i < n;i++)
{
cin>>a[i];
}
for(int i = 0;i < m;i++)
{
int x;
cin>>x;
int mid = 0;
int l = 0,r = n - 1;
int temp = -1;//若题目存在 x ,那temp一定会被赋值,否则不存在,在下面输出直接输出 -1,不用判断
while(l <= r)
{
mid = (l + r) / 2;
if(a[mid] < x)
{
l = mid + 1;
}
else if(a[mid] == x)
{
temp = mid + 1;//人家题目从1开始,我们是从下标0开始的,所以 + 1
r = mid - 1;
}
else
{
r = mid - 1;
}
}
cout<<temp<<" ";
}
return 0;
}
最原始的写法
包AC的!!!
这里空空如也
有帮助,赞一个