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

View as PDF

Submit solution

Points: 1.00
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
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

Comments

Please read the guidelines before commenting.



  • 0
    ShinrinOharu  commented on Sept. 17, 2023, 2:26 p.m.

    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;
    

    }


  • 0
    Jaker  commented on Sept. 10, 2023, 5:13 a.m.

    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ị đó.


  • 0
    B22DCDT293  commented on Sept. 9, 2023, 4:58 a.m.

    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"; }


  • 1
    lch101  commented on Aug. 27, 2023, 4:44 p.m.

    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  commented on Aug. 16, 2023, 2:16 a.m.

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


    • 1
      kobetocdo  commented on Aug. 18, 2023, 9:41 a.m.

      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 ạ


  • -2
    18_Lonely  commented on Aug. 11, 2023, 9:20 p.m.

    Quick Sort


  • 0
    godcyber  commented on Aug. 1, 2023, 7:14 a.m.

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


  • -5
    duydonv  commented on July 30, 2023, 3:32 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.