查詢 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

更新於:2019-12-18

1K+ 瀏覽

開啟你的職業生涯

完成課程認證

開始
廣告