इस समस्या में, हमें N पूर्णांक मानों से युक्त एक सरणी arr[] दी गई है। हमारा कार्य सरणी में सम संख्या में प्रकट होने वाले पहले तत्व को खोजने के लिए एक प्रोग्राम बनाना है। यदि कोई तत्व मौजूद है जो शर्त को संतुष्ट करता है तो उसे लौटाएं अन्यथा -1 लौटाएं जो false को दर्शाता है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: arr[] = {2, 3, 7, 2, 3, 6, 4, 1, 2} आउटपुट: 3 समाधान दृष्टिकोण
समस्या को हल करने की एक सरल विधि सरणी के प्रत्येक तत्व पर एक-एक करके विचार करना और फिर तत्व की घटना आवृत्ति सम है या नहीं जांचना और सरणी में सम घटना आवृत्ति वाले पहले तत्व को लौटाना है। समस्या को हल करने की एक अन्य विधि हैश मैप डेटा संरचना का उपयोग करना है। इसके लिए, हम सरणी को पार करेंगे और एक हैश मैप बनाएंगे जो तत्वों को उनकी घटना आवृत्ति के साथ टॉगल के रूप में संग्रहीत करेगा यानी इस तथ्य के आधार पर सत्य या असत्य कि यह सम है या नहीं। यह जांचने के ओवरहेड को कम करेगा कि घटना आवृत्ति सत्य है या असत्य क्योंकि टॉगल आवश्यक परिणाम दिखाएगा। मैप के लिए, पहला तत्व जिसका मान सत्य है (सम घटना आवृत्ति को दर्शाता है) हमारा आवश्यक परिणाम है।
हम सरणी को पार करेंगे और सरणी में प्रत्येक मान यानी arr[i] के लिए, हम मैप में जांचेंगे,
यदि यह मैप में मौजूद नहीं है, तो इसे टॉगल मान 'false' के साथ मैप में जोड़ें। यदि यह मैप में मौजूद है, तो इसके अनुरूप वर्तमान मान को टॉगल करें यानी यदि यह 'true' है तो इसे 'false' बनाएं, और यदि यह 'false' है तो इसे 'true' बनाएं।
सरणी के पुनरावृत्ति के बाद, मैप को पुनरावृत्त करें और टॉगल के अनुरूप मान 'true' वाले पहले मान को लौटाएं।
उदाहरण
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
#include <bits/stdc++.h> using namespace std; int findFirstEvenFreqVal(int arr[], int n){ unordered_map<int, bool> freqTogMap; for (int i = 0; i < n; i++){ if (freqTogMap.find(arr[i]) == freqTogMap.end()) freqTogMap.insert(pair <int,bool> (arr[i],false)); else { bool val = freqTogMap.find(arr[i])->second; if (val == true) freqTogMap.find(arr[i])->second = false; else freqTogMap.find(arr[i])->second = true; } } int j = 0; for (j = 0; j < n; j++){ if (freqTogMap.find(arr[j])->second == true) return arr[j];; } return -1; } int main(){ int arr[] = { 2, 4, 6, 8, 1, 6 }; cout<<"सरणी का पहला तत्व जो सम संख्या में प्रकट होता है वह है " <<findFirstEvenFreqVal(arr, 6); return 0; } आउटपुट
सरणी का पहला तत्व जो सम संख्या में प्रकट होता है वह है 6