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, PyPy, 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
my dingus
include <bits/stdc++.h>
using namespace std; long long n,i,d; int main()
include <bits/stdc++.h>
bai giai cua minh a
.
co ai bt lam ko
include <iostream>
include <vector>
include <climits>
using namespace std;
int main() { int n; int max1 = INTMIN; int max2 = INTMIN; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < n; i++) { if (a[i] > max1) { max2 = max1; max1 = a[i]; } else if (a[i] < max1 && max2 < a[i]) max2 = a[i]; } if (max2 == INT_MIN) cout << "NOT FOUND"; else cout << max2; }
Tìm số lớn thứ 2 trong mảng
Độ phức tạp O(N)
n = int(input("")) arr = list(map(int,input("").split())) max1 = float('-inf') max2 = float('-inf') for i in arr: if i > max1: max2 = max1 max1 = i elif i > max2 and i < max1: max2 = i if max2 == float('-inf'): print("NOT FOUND") else: print(max2)
Mình có tham khảo lời giải của tác giả
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
include <bits/stdc++.h>
using namespace std; using ll = long long; using ull = unsigned long long;
int main() { ios::syncwithstdio(false); cin.tie(nullptr); int n; cin >> n; set<ll> s; for (int i = 0; i < n; i++){ ll x; cin >> x; s.insert(x); } auto it=s.end(); if(s.size()==1) cout << "NOT FOUND"; else { --it;--it; cout << *it; } return 0; }
define int long long
using namespace std; int n,x; int32t main() { ios::syncwithstdio(false); cin.tie(nullptr); cin>>n; int m1=LLONGMIN,m2=LLONGMIN; for(int i=0;i<=n;i++) { cin>>x; if(x>m1) { if(m1!=x) m2=m1; m1=x; } else if(x<m1&&x>m2) { m2=x; } } if(m2==LLONGMIN) cout<<"NOT FOUND"; else cout<<m2; } full acc
sos
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
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ễ ạ
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;
Test 7 là sao vậy mọi người ơi
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
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 ạ