大佬们救命,样例没问题,自己写的测试案例也没问题,有wa和re
查看原帖
大佬们救命,样例没问题,自己写的测试案例也没问题,有wa和re
512221
K_No_Wei楼主2022/3/31 08:42
#include <iostream>
#include <algorithm>
using namespace std;
struct node										//结构体,用来存储输入的数值以及第一次指向的位置 
{
	int val = 0;
	int index;
}num[100005];									
int n, m;
int x;
void find(int x)								//二分查找模板 
{
	int l = 1, r = n;
	int mid;
	while(l <= r)
	{
		mid = l + (r - l) / 2;
		if(num[mid].val == x)
		{
			cout << num[mid].index << " ";		//如果找到了就直接返回该数值记录的下标 
			return ;
		}
		else if(num[mid].val < x)
			l = mid + 1;
		else
			r = mid - 1;
	}
	cout << -1 << " ";
}
int main(int argc, char *argv[]) {
	cin >> n >> m;
	int temp = 0; 
	for(int i = 1; i <= n; i++)
	{
		cin >> num[i].val;
		if(num[i].val != num[i - 1].val)		//如果当前元素与前面一个不一样,就将该 
		{
			num[i].index = i;
			temp = i;							//更新该数字出现的位置 
		}
			
		if(num[i].val == num[i - 1].val)		// 如果相等就让index指向第一次出现的位置 
		{
			num[i].index = temp;
		} 
	}	
	for(int i = 0; i < m; i++)
	{
		cin >> x;
		find(x);
	}
	return 0;
}
2022/3/31 08:42
加载中...