1、简单描述
给出含有n个数的上升序列,编号从1到n,然后给出q次询问,每次询问一个数x是否在上升序列中,如果在输出该数的编号,如果不在输出-1.
2、思路
# include <bits/stdc++.h>
using namespace std;
int a[3000010];
int n;
int f(int m)
{
int l = 1, r = n;
int mid;
while(l != r)
{
mid = (l + r) / 2;
if(a[mid] < m)
l = mid + 1;
else
r = mid;
}
if(a[l] == m)
return l;
else
return -1;
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
int t, m;
cin >> t;
while(t--)
{
cin >> m;
cout << f(m) << endl;
}
return 0;
}
<bits/stdc++.h>
二分查找,优化查找,减少计算量