इस समस्या में, हमें n पूर्णांक मानों की एक सरणी arr दी गई है। हमारा कार्य पूर्णांकों की सरणी में पहला दोहराने वाला तत्व ज्ञात करना है।
हमें सरणी से पहला पूर्णांक मान ढूंढना है जो सरणी में एक से अधिक बार आया हो।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट : arr[] = {4, 1, 8, 9, 7, 2, 1, 6, 4} आउटपुट : 4 व्याख्या −
एक से अधिक घटना वाले पूर्णांक 4 और 1 हैं। 4 की पहली घटना 1 से छोटी है। इसलिए उत्तर 4 है
समाधान दृष्टिकोण
समस्या का एक सरल समाधान नेस्टेड लूप का उपयोग करना है। हम दो लूप का उपयोग करेंगे, बाहरी सरणी के प्रत्येक पूर्णांक मान को पुनरावृत्त करने के लिए और आंतरिक सरणी में उसी मान के साथ मौजूद अन्य पूर्णांक मान की जांच करने के लिए। यदि हां, तो मान लौटाएं। यह विधि अच्छी है लेकिन बिना समाधान के मामले में, इसकी O(N2) जटिलता होगी।
समाधान दृष्टिकोण
एक अन्य दृष्टिकोण जो समस्या को बेहतर ढंग से हल कर सकता है वह है हैशिंग का उपयोग करना। हम सरणी को अंतिम इंडेक्स से पार करेंगे और फिर देखे गए तत्व के लिए इंडेक्स पर न्यूनतम इंडेक्स अपडेट करेंगे।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include<bits/stdc++.h> using namespace std; int findRepeatingElementArray(int arr[], int n){ int minRetIndex = -1; set<int> visitedElements; for (int i = n - 1; i >= 0; i--){ if (visitedElements.find(arr[i]) != visitedElements.end()) minRetIndex = i; else visitedElements.insert(arr[i]); } if (minRetIndex != -1) return arr[minRetIndex]; else return -1; } int main(){ int arr[] = {4, 1, 6, 3, 4, 1, 5, 8}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"दोहराई गई घटना वाला तत्व है "<<findRepeatingElementArray(arr, n); } आउटपुट
दोहराई गई घटना वाला तत्व है 4