题解 | #查找#

查找

https://www.nowcoder.com/practice/d93db01c2ee44e8a9237d63842aca8aa

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
   int n,m;
   while(cin>>n){
      int *A = (int*)malloc(sizeof(int)*(n));
      for(int i=0;i<n;i++) cin>>A[i];
      sort(A, A+n);
      cin>>m;
      int *B = (int*)malloc(sizeof(int)*(m));
      for(int i=0; i<m; i++) cin>>B[i];
      for(int i=0;i<m;i++){
        int left=0,right=n-1;
        while(left<=right){
            int mid=(left + right) / 2;
            if(A[mid] == B[i]) {cout<<"YES\n"; break;}
            else if(A[mid] > B[i]) right = mid - 1;
            else left = mid + 1;
        }
        if(left > right) cout<<"NO\n";
      }
   }
   return 0;
}

全部评论

相关推荐

中电45所 测试开发岗 可以解决北京户口,提供员工宿舍,早 8 晚 5(不过一般会加班到7-8点,周六一般也会去,面试官说的) 硕士
点赞 评论 收藏
转发
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务