题解 | #查找#

查找

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

#include <stdio.h>
#include <stdlib.h>
int cmp(const void*a,const void*b){
    return *(int *)a>*(int *)b;
}
int main() {
    int n;
    while (scanf("%d", &n) != EOF) { 
        int arr[n];
        for(int i=0;i<n;++i){
            scanf("%d",&arr[i]);
        }
        qsort(arr, n,sizeof(int),cmp);
        int m;
        scanf("%d", &m);
        while(m--){
            int x;
            scanf("%d", &x);
            int left=0,right=n-1,flag=0;
            while (left<=right) {
                int middle=(left+right)/2;
                if(arr[middle]<x){
                    left=middle+1;
                }
                else if(arr[middle]>x){
                    right=middle-1;
                }
                else{
                    printf("%s\n","YES");
                    flag=1;
                    break;//这句很重要
                }

            }
            if(flag==0) printf("%s\n","NO");
        }
    }
    return 0;
}

#C#
全部评论

相关推荐

Wy_m:只要不是能叫的上名的公司 去实习没有任何意义 不如好好沉淀自己
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务