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