Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

요소가 C++의 범위로 제한되지 않는 경우 지정된 배열에서 중복 찾기

<시간/>

N개의 정수 배열이 있다고 가정합니다. 여기서 우리는 주어진 배열의 복제본을 인쇄할 것입니다. 그러한 중복이 없으면 -1을 반환합니다. 따라서 배열이 [12, 15, 12, 3, 6, 12, 3, 48, 56, 8, 48]과 같으면 중복 항목은 [12, 3, 48]

여기서는 C++에서 순서가 지정되지 않은 맵을 사용합니다. 따라서 처음에 하나의 요소를 가져올 때 해당 요소가 지도에 있는지 여부를 확인하고, 존재하는 경우 해당 요소를 중복으로 인쇄하고, 그렇지 않으면 맵에 추가하면 됩니다.

예시

#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);
}

출력

Duplicate elements are: 12 3 48