求助,用二分做的结果找到了第2个3。。。。(悲)
查看原帖
求助,用二分做的结果找到了第2个3。。。。(悲)
877908
liukezhang楼主2023/4/4 14:03

code:

#include<bits/stdc++.h>
using namespace std;
int a[100001];
int main()
{
	int n,m,q;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	while(m--)
		int l=1,r=n,mid;
		bool flag=false;
		scanf("%d",&q);
		while(l<=r)
		{
			mid=(l+r)/2;
			if (a[mid]>q)
			{
				r=mid-1;
			}
			else if (a[mid]<q)
			{
				l=mid+1;
			}
			else
			{
				printf("%d ",mid);
				flag=true;
				break;
			}
		}
		if (!flag)
		{
			printf("-1 ");
		}
	}
	printf("\n");
	
	return 0;
}

样例:11 3

1 3 3 3 5 7 9 11 13 15 15

1 3 6

结果却出来了:1 3 -1

HELP

2023/4/4 14:03
加载中...