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

Tìm phần tử trùng lặp trong mảng không giới hạn phạm vi trong C++


Cho mảng N số nguyên, in các phần tử trùng lặp. Nếu không có trả về -1. Ví dụ [12,15,12,3,6,12,3,48,56,8,48] → 12,3,48.

Dùng unordered_map đếm tần suất, in các khóa có tần suất >1.

Ví dụ

#include<iostream> #include<unordered_map> using namespace std; void displayDuplicates(int arr[], int n) {    unordered_map<int, int> occurrence;    for (int i=0; i<n; i++)    occurrence[arr[i]]++;    bool duplicate = false;    unordered_map<int, int>:: iterator itr;    for (itr=occurrence.begin(); itr!=occurrence.end(); itr++) {       if (itr->second > 1) {          cout << itr->first << " ";          duplicate = true;       }    }    if (duplicate == false)    cout << "-1"; } int main() {    int arr[] = {12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48};    int n = sizeof(arr) / sizeof(arr[0]);    cout << "Duplicate elements are: ";    displayDuplicates(arr, n); }

Kết quả

Duplicate elements are: 12 3 48