Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm phần tử lặp lại trong mảng chỉ đọc (read-only) C++


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.