Cho mảng chỉ đọc (không được sửa đổi), tìm **một** phần tử xuất hiện nhiều hơn 1 lần. Ví dụ: {1,2,3,3,4,5,5,6} → trả về 3 (hoặc 5).
Phương pháp: Hashmap đếm tần suất
- Duyệt mảng, đếm tần suất vào
map<int,int>. - Duyệt map, trả về key đầu tiên có value > 1.
Ví dụ mã nguồn
#include <bits/stdc++.h>
using namespace std;
int findRepeatingElement(int arr[], int n) {
map<int,int> freq;
for (int i=0;i 1) return p.first;
return -1; // không tìm thấy
}
int main() {
int arr[] = {1,2,3,3,4,5,5,6};
cout << findRepeatingElement(arr, 8); // 3
return 0;
}
Kết quả
3
Phương pháp O(n log n) do dùng map (cây đỏ-đen). Có thể dùng unordered_map cho O(n) trung bình.