题解 | #查找#

查找

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

#include <bits/stdc++.h>
using namespace std;
int a[101];
bool find(int n,int x){
    int left=0;
    int right=n-1;
    
   
    while(left<=right){
        int mid=(left+right)/2;
         if(x==a[mid]) return true;
         if(a[mid]>x){
            right=mid-1;
         }
    
        if(a[mid]<x){
            left=mid+1;
         }
}
return false;
}
int main() {
    int n,m;
    while(cin>>n){
    
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    sort(a,a+n);
    cin>>m;
    for(int i=0;i<m;i++){
        int z;
        cin>>z;
       bool outcome=find(n,z);
       if(outcome) printf("YES\n");
       else printf("NO\n");
    }
}
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务