VT02 - Tìm số lớn thứ hai của mảng

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

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho một mảng các số nguyên có ~n~ phần tử, bạn hãy tìm ra phần tử lớn thứ hai của mảng. Phần tử lớn thứ 2 bắt buộc phải nhỏ hơn, không chấp nhận bằng phần tử lớn nhất.

Input

  • Dòng đầu tiên là số nguyên dương ~n~, số lượng phần tử của mảng, (~2 \le n \le 10^6~)
  • Dòng tiếp theo là ~n~ số nguyên của mảng, (~|a_{i}| \le 10^9~)

Output

  • Nếu tìm thấy số lớn thứ 2 trong mảng, in ra số đó
  • Nếu không tìm thấy thì in ra NOT FOUND

Sample

Input #1
3
1 2 3
Output #1
2

Bình luận

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



  • 0
    kieuly123  đã bình luận lúc 30, Tháng 3, 2024, 1:38

    include<stdio.h>

    include<math.h>

    void nhap1(unsigned long n, long long a[]) { int i; for(i=0;i<n;i++) { scanf("%lld",&a[i]); } }

    int main() { unsigned long n; scanf("%lu",&n); if(n<2) printf("NOT FOUND"); else { long long a[n]; long long b[n]; nhap1(n,a); int i,j,k=0; long long max=a[0]; for(i=1;i<n;i++) { if(a[i]>max) max=a[i]; } for(i=0;i<n;i++) { if(a[i]<max) { b[k]=a[i]; k++; } } if(k==0) printf("NOT FOUND"); else { long long T=b[0]; for(j=0;j<k;j++) { if(T<b[j]) T=b[j]; } printf("%lld",T); } } return 0; }


  • 0
    Dustin687  đã bình luận lúc 20, Tháng 3, 2024, 11:19

    test 3 vói test cuối bị sao vậy ạ

    include <bits/stdc++.h>

    using namespace std; int main(){ int n;cin>>n; int a[n]; int m=0; for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n); m=a[n-1]; for(int i=n-2; i>=0;i--){ if(a[i]<m){ cout<<a[i]; break; } if(i==0 && a[i]<=m) cout<<"NOT"; } }


    • 0
      kieuly123  đã bình luận lúc 30, Tháng 3, 2024, 1:38

      test 3 hình như là số âm, test cuối là các số bằng nhau


  • 0
    thanh30  đã bình luận lúc 8, Tháng 3, 2024, 4:32

    include <stdio.h>

    void findSecondLargest(int arr[], int n) { if (n < 2) { printf("NOT FOUND\n"); return; }

    // Sắp xếp mảng theo thứ tự giảm dần
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] < arr[j]) {
                // Hoán đổi giá trị
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    
    // Tìm số lớn thứ hai khác số lớn nhất
    for (int i = 1; i < n; i++) {
        if (arr[i] < arr[0]) {
            printf("Second Largest: %d\n", arr[i]);
            return;
        }
    }
    
    printf("NOT FOUND\n");
    

    }

    // Hàm main để thử nghiệm int main() { int n; scanf("%d", &n);

    int myArray[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &myArray[i]);
    }
    
    findSecondLargest(myArray, n);
    
    return 0;
    

    }


  • -1
    hoangvanthong  đã bình luận lúc 27, Tháng 2, 2024, 13:20 sửa 3

    include <bits/stdc++.h>

    using namespace std;
    
    int main()
    {
        int n;
        cin>>n;
        int a[n];
        for(int i=1; i<=n; i++)
            cin>>a[i];
        sort(a+1,a+1+n, greater<int>());
        for(int i=1; i<=n; i++){
            if(a[1]>a[i]){
                cout<&lt;a[i];
                break;
            }
            if(a[1]==a[n]){
                cout<<"NOT FOUND";
                break;
            }
        }
        return 0;
    }
    

    $$Full test!$$


  • -1
    thangok  đã bình luận lúc 27, Tháng 2, 2024, 10:54

    Full test nhé

    include<bits/stdc++.h>

    using namespace std; int main() { int n; cin>>n; int a[n]; int maxx=-1e9; int dem=0; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { if(a[i]==a[i+1]) dem++; } if(dem==n-1) cout<<"NOT FOUND"; else { for(int i=0;i<n;i++) { if(maxx<a[i]) maxx=a[i]; } //cout<<maxx; int maxx2=-1e9; for(int i=0;i<n;i++) { if(maxx2<a[i]&&a[i]!=maxx) maxx2=a[i]; } cout<<maxx2; } return 0; }


  • 0
    toan0123  đã bình luận lúc 1, Tháng 2, 2024, 14:42

    C++

    include <bits/stdc++.h>

    define db double

    define ll long long

    define fl float

    using namespace std; set <ll> s; vector <ll> v;

    void solve () { int dem=0; int n; cin>>n;

    if (n&lt;2){
    
        cout<<"NOT FOUND";
    }else {
    
    for (int i=0; i&lt;n; i++)
    {
        int x; cin>>x;
        s.insert(x);
    }
    
    for (auto tmp : s)
    {
        v.push_back(tmp);
        dem++;
    }
    if(dem>1){
    sort (v.begin(), v.end(), greater<db>());
    
    cout<&lt;v[1];
    }else {
        cout<<"NOT FOUND";
    }
    }
    

    }

    int main() { solve();

    cout<&lt;endl;
    return 0;
    

    }


  • 0
    thao_oiiiiii3  đã bình luận lúc 6, Tháng 1, 2024, 6:57

    giao lưu 1 tý C++ ạ ^^

    include <iostream>

    include <climits>

    using namespace std;

    void nhap(int n, int a[]) { for (int i = 0; i < n; i++) { cin >> a[i]; } }

    int Max(int n, int a[]) { int max = a[0]; for (int i = 0; i < n; i++) { if (max < a[i]) { max = a[i]; } } return max; }

    int soLonThuHai(int n, int a[]) { int soLonThuHai = INT_MIN; int max = Max(n, a); for (int i = 0; i < n; i++) { if (a[i] < max && soLonThuHai < a[i]) { soLonThuHai = a[i]; } } return soLonThuHai; }

    int main() { int n; cin >> n; int a[1000000];

    if (2 <= n && n <= 1000000) { nhap(n, a); int result = soLonThuHai(n, a); if (result != INT_MIN) { cout << result; } else { cout << "NOT FOUND"; } } else { cout << "NOT FOUND"; }

    return 0; }


  • 0
    VoPhatDat  đã bình luận lúc 26, Tháng 12, 2023, 12:56

    Arr = [] n = int(input()) Arr = list(map(int, input().split())) Arr.sort(reverse = True) Max2 = 0 Check = False; for I in range(len(Arr)): if Arr[0] == Arr[I]: continue; Max2 = Arr[I] Check = True break if (Check == False): print("NOT FOUND") else: print(Max2)


  • 1
    kitajima2910  đã bình luận lúc 24, Tháng 12, 2023, 10:19

    Các tính đồ Java 8+ yêu quý, tham khảo code mình nếu chưa làm được. Thấy hay xin up vote nhé :D

    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    import java.util.TreeMap;
    
    /**
     *
     * @author Kitajima2910
     */
    public class VT02 {
    
        public static void main(String[] args) throws IOException {
    
            Scanner s = new Scanner(System.in);
    
            int n = s.nextInt();
    
            Map&lt;Integer, Integer> m = new TreeMap<>(Comparator.reverseOrder());
    
            for(int i = 1; i <= n; i++) {
                int e = s.nextInt();
                m.put(e, e);
            }
    
            List<Integer> r = new ArrayList<>(m.keySet());
    
            if(r.size() == 1) {
                System.out.println("NOT FOUND");
                return;
            }
    
            System.out.println(r.get(1));
        }
    
    }
    

  • -2
    LiuChi_3007  đã bình luận lúc 20, Tháng 12, 2023, 13:04

    Hỗ trợ mọi người nha!

    include<bits/stdc++.h>

    using namespace std; int main(){ int n;cin >>n; int a[n]; int max1=INTMIN,max2=INTMIN; for(int i=0;i<n;i++){ cin >> a[i]; } for(int i=0;i<n;i++){ if(max1 < a[i]){ max1 = a[i]; } } int check=0; for(int i=0;i<n;i++){ if(max2 < a[i] && a[i]!=max1){ check=1; max2=a[i]; } } if(check==0){ cout <<"NOT FOUND"; } else{ cout << max2; } }


  • 0
    tinhxyz  đã bình luận lúc 17, Tháng 12, 2023, 14:02

    n=int(input()) a=list(map(int,input().split())) a.sort() d=0 for j in range(len(a)): r=a[j] if r+0==max(a): d=d+1 if len(a)<2: print('NOT FOUND') else: for i in range(len(a)-1): b=a[i] if min(a)==max(a): print('NOT FOUND') elif b==max(a): for k in range(len(a)-d): c=a[k] print(c) else: print(b)

    py3


  • 0
    deno  đã bình luận lúc 29, Tháng 11, 2023, 10:44

    DENO PROVJP

    #include <stdio.h> int main(){ int n; long long a[50]; int max=-99999; int max2=max; int d=max; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%lld",&a[i]); } for(int i=0;i<n;i++){ if(a[i]>max)max=a[i]; } for(int i=0;i<n;i++){ if(a[i]>max2&&a[i]!=max)max2=a[i]; } if(max2==d){ printf("NOT FOUND"); } else{ printf("%d",max2); } }


  • 1
    tungkq123  đã bình luận lúc 28, Tháng 11, 2023, 15:23

    mong ad capaj nhaats tinh năng hiện phần dữ liệu test case đầy đủ mỗi bài thì test sẽ dễ ạ


  • 0
    huyhoang190605  đã bình luận lúc 24, Tháng 11, 2023, 11:19

    ai chưa làm đc có thể tham khảo code py3:

    n = int(input())
    a = list(map(int, input().split()))
    if len(a) < 2:
        print('NOT FOUND')
    else:
        x = max(a)
        m2 = float('-inf')
        t = m2
        for i in a:
            if i < x and i > m2:
                m2 = i 
        if m2 == t:
            print('NOT FOUND')
        else:
            print(m2)
    

  • 1
    nguien_24  đã bình luận lúc 10, Tháng 11, 2023, 17:12

    quicksort(); rồi kiểm tra phần tử đầu và cuối bằng nhau không nếu = thì NOT FOUND. chạy 1 vòng for kiểm tra con if a[n-1]>a[i] thì in ra a[i] rồi break; else continue;


  • 0
    thanhqt74  đã bình luận lúc 1, Tháng 11, 2023, 13:22

    Test 7 là sao vậy mọi người ơi


  • -1
    nhpnhpnhp  đã bình luận lúc 28, Tháng 10, 2023, 7:10

    ae cho mình xin test6 với ;-;


  • -3
    ShinrinOharu  đã bình luận lúc 17, Tháng 9, 2023, 14:26

    include<bits/stdc++.h>

    using namespace std;

    int main() { int n; cin >> n; vector<int> arr(n); for(int i=0; i<n; i++) { cin >> arr[i]; }

    sort(arr.begin(), arr.end());
    
    int max = arr[n-1];
    for(int i=n-2; i>=0; i--) {
        if(arr[i] < max) {
            cout << arr[i];
            return 0;
        }
    }
    
    cout << "NOT FOUND";
    return 0;
    

    }


  • -1
    Jaker  đã bình luận lúc 10, Tháng 9, 2023, 5:13

    mình giải đc rồi,các bạn tham khảo code của mình nhé(python3): n = int(input()) A = list(map(int, input().split()))

    if len(A) < 2: print("NOT FOUND") else: max1 = max(A) max2 = float('-inf')

    for num in A:
        if num < max1 and num > max2:
            max2 = num
    
    if max2 == float('-inf'):
        print('NOT FOUND')
    else:
        print(max2)
    

    giải thích: Nếu danh sách A có ít nhất 2 phần tử, chương trình sẽ tìm phần tử lớn nhất trong danh sách (max1) và khởi tạo max2 với giá trị âm vô cùng. chương trình sử dụng vòng lặp để duyệt qua từng phần tử trong danh sách A. Nếu phần tử này nhỏ hơn max1 và lớn hơn max2, nó sẽ cập nhật max2 thành giá trị của phần tử này. chương trình kiểm tra xem max2 có được cập nhật từ giá trị âm vô cùng ban đầu hay không. Nếu max2 không thay đổi, điều này có nghĩa là không có phần tử nào trong danh sách A nhỏ hơn phần tử lớn nhất (max1). Trong trường hợp này, nó sẽ in ra "NOT FOUND". Ngược lại, nếu có phần tử lớn thứ hai, nó sẽ in ra giá trị đó.


  • -2
    B22DCDT293  đã bình luận lúc 9, Tháng 9, 2023, 4:58

    include<bits/stdc++.h>

    using namespace std;

    int main(){ iosbase::syncwith_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int a[n]; for(int &x:a) cin >> x; sort(a,a + n,greater<int>()); for(int i = 1;i < n;i++){ if(a[i] != a[0]){ cout << a[i]; return 0; } } cout << "NOT FOUND"; }


  • 0
    lch101  đã bình luận lúc 27, Tháng 8, 2023, 16:44

    Bài này nếu mn code c++ thì có thể xài set rồi dịch con trỏ 1 cái từ vị trí cuối là dc nghen


  • -1
    thinh01092005  đã bình luận lúc 16, Tháng 8, 2023, 2:16

    mn cho em hỏi test 6 là gì v ạ


    • 0
      kobetocdo  đã bình luận lúc 18, Tháng 8, 2023, 9:41

      cái trường hợp đấy là tất cả các số bằng nhau nó mới không tìm được đấy bạn ạ


  • -4
    18_Lonely  đã bình luận lúc 11, Tháng 8, 2023, 21:20

    Quick Sort


  • -2
    godcyber  đã bình luận lúc 1, Tháng 8, 2023, 7:14

    Đề này chắc chỉ có code trâu thôi ad ơi :((


  • -7
    duydonv  đã bình luận lúc 30, Tháng 7, 2023, 3:32

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