玄关,为何错了
2025-08-02 20:21:00
发布于:浙江
10阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int n,c;
int a[100005][3];
int main(){
int n,m,o;
cin>>n;
cin>>m;
for(int i=1;i<=n;i++){
cin>>o;
if(a[o][2]==0){
a[o][1]=i;
a[o][2]=1;
}
}
for(int i=1;i<=m;i++){
int oo;
cin>>oo;
if(a[oo][1]==0){
cout<<"-1"<<endl;
}
else{
cout<<a[oo][1]<<endl;
}
}
return 0;
}
全部评论 1
可以用二分查找
#include <bits/stdc++.h> using namespace std; int search(int a[], int len, int target) { int left = 0, right = len - 1; while(left <= right) { int middle = left + (right - left) / 2; if(target == a[middle]) return middle + 1; if(target > a[middle]) left = middle + 1; else if(target < a[middle]) right = middle - 1; } return -1; } int main() { int n, m, arr[1000000]; cin >> n >> m; for(int i = 0; i < n; i++) cin >> arr[i]; for(int i = 0; i < m; i++) { int x; cin >> x; cout << search(arr, n, x) << endl; } return 0; }
2025-08-14 来自 江西
1oh,谢谢
2025-08-15 来自 浙江
0
有帮助,赞一个