একটি রিড-অনলি অ্যারে দেওয়া থাকলে, সেটি থেকে যেকোনো একটি রিপিটিং (পুনরাবৃত্ত) এলিমেন্ট বের করতে হবে।
সমাধানের পদ্ধতি
- অ্যারে ইনিশিয়ালাইজ করুন।
- একটি ম্যাপ (
map<int,int>) দিয়ে ফ্রিকোয়েন্সি গণনা করুন। - অ্যারে ট্রাভার্স করে প্রতিটি এলিমেন্টের কাউন্ট বাড়ান।
- ম্যাপে ইটারেট করে প্রথম যে এলিমেন্টের ফ্রিকোয়েন্সি > 1, সেটি রিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int findRepeatingElement(int arr[], int n) {
map<int,int> freq;
for (int i = 0; i < n; i++) {
auto itr = freq.find(arr[i]);
if (itr != freq.end()) itr->second++;
else freq.insert({arr[i], 1});
}
for (auto itr = freq.begin(); itr != freq.end(); ++itr)
if (itr->second > 1) return itr->first;
return -1;
}
int main() {
int arr[] = {1, 2, 3, 3, 4, 5, 5, 6};
cout << findRepeatingElement(arr, 8) << endl;
return 0;
}