[Mảng 1 Chiều Cơ Bản]. Bài 37. Tìm kiếm trong mảng 1 chiều

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng A[] gồm N phần tử, bạn hãy kiểm tra xem giá trị X có xuất hiện trong mảng không?

Gợi ý : Dùng mảng đánh dấu để mỗi test case chỉ mất O(1) thay vì tìm kiếm tuyến tính sẽ mất O(N)


Đầu vào

Dòng 1 là N : số phần tử trong mảng

Dòng 2 là N số trong mảng viết cách nhau 1 dấu cách

Dòng 3 là T : Số test case

T dòng tiếp theo mỗi dòng là số nguyên X


Giới hạn

1<=N<=10^6

0<=A[i]<=10^7

1<=T<=10^4

0<=X<=10^7


Đầu ra

Đối với mỗi test case in ra YES nếu X xuất hiện trong mảng, ngược lại in NO.


Ví dụ :

Input 01
9
2 41 21 28 27 3 49 22 2 
5
3
27
15
15
19
Output 01
YES
YES
NO
NO
NO

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -4
    khuemih  đã bình luận lúc 26, Tháng 8, 2024, 9:43

    co cai chem chep


    • 0
      doanbang042  đã bình luận lúc 14, Tháng 9, 2024, 4:22

      bạn cho mình hỏi code này của mình sao lại TLE ạ?


    • 0
      doanbang042  đã bình luận lúc 14, Tháng 9, 2024, 4:22

      include <stdio.h>

      include <math.h>

      int dem[1000001]; int ba(int a[],int n,int x){ int max=-1e9,cnt=0; for(int i=0;i<n;++i){ if(a[i]==x){ dem[a[i]]=1; if(a[i]>max){ max=a[i]; }

          }
      }
      for(int i=0;i&lt;n;++i){
          if(dem[a[i]]==1){
              cnt++;
              dem[a[i]]=0;
          }
      }
      if(cnt>0){
          return 1;
      }else{
          return 0;
      }
      

      } int main(){ int n; scanf("%d",&n); int a[n]; for(int i=0;i<n;++i){ scanf("%d",&a[i]); } int t; scanf("%d",&t); int x; for(int i=1;i<=t;++i){ scanf("%d",&x); if(ba(a,n,x)){ printf("YES\n"); }else{ printf("NO\n"); } } }


  • -7
    namduongit  đã bình luận lúc 20, Tháng 7, 2024, 2:02

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.