题解 | #查找#
查找
https://www.nowcoder.com/practice/d93db01c2ee44e8a9237d63842aca8aa
#include <iostream> #include "cstdio" #include "algorithm" #include "map" using namespace std; //bool BinarySort(int arr[],int left,int right,int x){ // int mid; // while (left<=right){ // mid=(left+right)/2; // if(arr[mid]==x) // return true; // if(arr[mid]>x){ // right=mid-1; // } else // left=mid+1; // // } // return false; //} int main() { // int n; // scanf("%d",&n); // int arr[n]; // for(int i=0;i<n;i++){ // scanf("%d",&arr[i]); // } // // sort(arr,arr+n); ///二分查找需要有序数组 // // int m; // scanf("%d",&m); // int integer[m]; // for(int i=0;i<m;i++){ // scanf("%d",integer+i); // } // for(int i=0;i<m;i++){ // if(BinarySort(arr,0,n-1,integer[i])) // printf("%s\n","YES"); // else // printf("%s\n","NO"); // } // // // // return 0; ///也可以用map map<int ,int> findIndex; int m,n; int arr[100]; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++){ scanf("%d",arr+i); findIndex[arr[i]]=i; //将数组元素作为键, 数组元素下标作为值,插入到map中 } scanf("%d",&m); int findNum[m]; for(int i=0;i<m;i++){ scanf("%d",findNum+i); } for(int i=0;i<m;i++){ if(findIndex.find(findNum[i]) == findIndex.end()){ printf("%s\n","NO"); } else printf("%s\n","YES"); } } return 0; }