首页 > 试题广场 >

查找

[编程题]查找
  • 热度指数:31578 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入数组长度 n 输入数组      a[1...n] 输入查找个数m 输入查找数字b[1...m]   输出 YES or NO  查找有则YES 否则NO 。

输入描述:
输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。


输出描述:
如果在n个数组中输出YES否则输出NO。
示例1

输入

5
1 5 2 4 3
3
2 5 6

输出

YES
YES
NO
 import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    /**
     * 二分排序的关键就是要先排序;
     * */
    public static boolean binSearch(int[] nums, int number) {
        int left = 0;
        int right = nums.length - 1;
        boolean judge = false;


        while (left <= right) {
            int middle = (left + right) / 2;
            if (nums[middle] < number) {
                left = middle + 1;
            } else if (nums[middle] > number) {
                right = middle - 1;
            } else {
                return true;
            }
        }
        return false;
    }


    public static void main(String[] args) {
        int number;
        int Max=100;
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {

            number = scanner.nextInt();
            int[] nums = new int[number];
            for (int i = 0; i < number; i++) {
                nums[i] = scanner.nextInt();
            }
            Arrays.sort(nums);
            int m = scanner.nextInt();
            for (int i = 0; i < m; i++) {
                int target;
                target = scanner.nextInt();
                if (binSearch(nums, target)) {
                    System.out.println("YES");
                } else {
                    System.out.println("NO");

                }
            }


        }
    }
}
发表于 2021-03-23 11:45:58 回复(0)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int na = Integer.parseInt(br.readLine());
        String[] a = br.readLine().split(" ");
        int[] aa = new int[na];
        for (int i = 0; i < na; i++) {
            aa[i] = Integer.parseInt(a[i]);
        }
        Arrays.sort(aa);
        int nb = Integer.parseInt(br.readLine());
        String[] b = br.readLine().split(" ");
        int[] bb = new int[nb];
        for (int i = 0; i < nb; i++) {
            bb[i] = Integer.parseInt(b[i]);
        }

        for (int i = 0; i < nb; i++) {
            if (Arrays.binarySearch(aa, bb[i]) >=0) {
                System.out.println("YES");
            } else
                System.out.println("NO");
        }

    }
}


发表于 2021-02-24 10:18:25 回复(0)
Java解法
import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < n; i++) set.add(scanner.nextInt());
        int m = scanner.nextInt();
        for (int i = 0; i < m; i++) System.out.println(set.contains(scanner.nextInt())?"YES":"NO");
    }
}


发表于 2020-03-14 16:29:34 回复(0)
import java.util.*;
//每次写完再看别人的代码都感觉自己写的好麻烦。
public class Main{
    private static void sort(int[] a) {
        int[] temp = new int[a.length];
        sort(a, temp, 0, a.length-1);
    }
    private static void sort(int[] a,int[] temp,int left,int right) {
        if(left<right) {
            
        int mid = (left+right)/2;
        sort(a, temp, left, mid);
        sort(a, temp, mid+1, right);
        merge(a, temp, left, mid, right);
        }
    }
    private static void merge(int[] a,int[] temp,int left,int mid,int right) {
        int i = left;
        int j = mid+1;
        int p = 0;
        while(i<=mid&&j<=right) {
            if(a[i]<a[j]) {
                temp[p++] = a[i++];
            }else {
                temp[p++] = a[j++];
            }
        }
        while(i<=mid) {
            temp[p++] = a[i++];
            
        }
        while(j<right+1) {
            temp[p++] = a[j++];
        }
        p=0;
        while(left<=right) {
            a[left++] = temp[p++];
        }
    }
    private static boolean bin_search(int[] a,int n){
        int len = a.length;
        int left = 0;
        int right = len-1;
        int mid ;
        while(left<=right){
            mid = (left+right)/2;
            
            if(a[mid]==n){
                return true;
            }
            if(a[mid]<n){
                left = mid+1;
                
                continue;
            }
            if(a[mid]>n){
                right = mid-1;
                continue;
            }
            
        }
        return false;
    }
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n_len = scanner.nextInt();
        
        int[] n = new int[n_len];
        for(int i = 0;i<n_len;i++) {
            n[i]= scanner.nextInt(); 
        }
        sort(n);

        int m_len = scanner.nextInt();
        int[] m = new int[m_len];
        
        for(int i = 0;i<m_len;i++) {
            m[i]= scanner.nextInt(); 
        }
        for(int i = 0;i<m_len;i++){
            if(bin_search(n,m[i])){
                System.out.println("YES");
            }else{
                System.out.println("NO");
            }
        }
        scanner.close();
        
    }
}

发表于 2018-12-29 20:31:55 回复(0)

运行时间:49ms
占用内存:10964k

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();
            int[] arr1 = new int[n];
            for (int i = 0; i < n; i++) {
                arr1[i] = scan.nextInt();
            }
            int m = scan.nextInt();
            int[] arr2 = new int[m];
            for (int i = 0; i < m; i++) {
                arr2[i] = scan.nextInt();
            }
            int count = 0;
            for (int i = 0; i < arr2.length; i++) {
                int temp = arr2[i];
                for (int j = 0; j < arr1.length; j++) {
                    if (temp == arr1[j]) {
                        System.out.println("YES");
                        break;
                    } else {
                        count++;
                    }
                    if (count == n) {
                        System.out.println("NO");
                    }
                }
                count = 0;
            }
        }
    }
}
发表于 2018-04-30 17:29:09 回复(0)

问题信息

难度:
5条回答 11374浏览

热门推荐

通过挑战的用户

查看代码