Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

पहला तत्व जो सी ++ में एक सरणी में कई बार दिखाई देता है

इस समस्या में, हमें एन पूर्णांक मानों से युक्त एक सरणी गिरफ्तारी [] दी जाती है। हमारा काम पहला तत्व खोजने के लिए एक प्रोग्राम बनाना है जो किसी सरणी में सम संख्या में बार-बार दिखाई देता है . यदि कोई तत्व मौजूद है जो शर्त को पूरा करता है तो उसे वापस कर दें अन्यथा -1 लौटाएं गलत

समस्या को समझने के लिए एक उदाहरण लेते हैं,

Input: arr[] = {2, 3, 7, 2, 3, 6, 4, 1, 2}
Output: 3

समाधान दृष्टिकोण

समस्या को हल करने का एक सरल तरीका है, सरणी के प्रत्येक तत्व पर एक-एक करके विचार करना और फिर तत्व की घटना आवृत्ति की जाँच करना और सरणी में पहले तत्व को सम घटना आवृत्ति के साथ वापस करना। समस्या को हल करने का दूसरा तरीका है हैश मैप . का उपयोग करना डेटा संरचना। इसके लिए, हम सरणी को पार करेंगे और एक हैश मैप तैयार करेंगे जो तत्वों को उनकी घटना आवृत्ति के साथ टॉगल के रूप में संग्रहीत करता है यानी सत्य या गलत इस तथ्य के आधार पर कि यह सम है या नहीं। यह जाँच के ऊपरी हिस्से को कम करेगा कि घटना आवृत्ति सही है या गलत क्योंकि टॉगल आवश्यक परिणाम दिखाएगा। मानचित्र के लिए, पहला तत्व जिसका मान सत्य है (घटना की आवृत्ति को भी दर्शाता है) हमारा आवश्यक परिणाम है।

हम सरणी को पार करेंगे और प्रत्येक मान के लिए, सरणी में यानी arr[i] हम मानचित्र में जाँच करेंगे,

यदि यह मानचित्र में मौजूद नहीं है, तो इसे टॉगल मान 'गलत . के साथ मानचित्र में जोड़ें '। यदि यह मानचित्र में मौजूद है, तो इसके अनुरूप वर्तमान मान को टॉगल करें अर्थात यदि यह 'सत्य' है ' इसे 'झूठा' बनाएं ', और अगर यह 'गलत है ' इसे 'सच बनाएं '।

सरणी के पुनरावृति के बाद, मानचित्र को पुनरावृत्त करें और 'सत्य के रूप में टॉगल के संबंधित मान के साथ पहला मान लौटाएं '।

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम

#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<<"The first element of the array which appears even number of times is "  <<findFirstEvenFreqVal(arr, 6);
   return 0;
}

आउटपुट

The first element of the array which appears even number of times is 6

  1. एक सरणी में अभाज्य संख्या K ज्ञात करें जैसे कि (A[i]% K) C++ में अधिकतम हो

    मान लीजिए कि हमारे पास n पूर्णांकों के साथ एक सरणी A है। हमें एक तत्व K को खोजना है जैसे कि K अभाज्य है, और A[i] mod K, K के सभी संभावित मानों में से सभी मान्य i के लिए अधिकतम है। यदि ऐसी कोई संख्या नहीं मिलती है, तो -1 लौटाएं। उदाहरण के लिए, यदि ए =[2, 10, 15, 7, 6, 8, 13], तो आउटपुट 13 होगा। तीन अ

  1. एक सरणी तत्व खोजें जैसे कि सभी तत्व इसके द्वारा c++ . का उपयोग करके विभाज्य हैं

    विचार करें कि हमारे पास कुछ तत्वों के साथ एक सरणी ए है। हमें A से एक अवयव इस प्रकार ज्ञात करना है कि सभी तत्वों को इससे विभाजित किया जा सके। मान लीजिए कि ए [15, 21, 69, 33, 3, 72, 81] जैसा है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हो सकती हैं। इस समस्या को हल करने के लिए, हम ए में सबसे

  1. किसी सरणी में न्यूनतम संख्या जोड़ें ताकि योग C++ में भी हो जाए?

    मान लीजिए कि कुछ संख्याओं के साथ एक सरणी है। हमें कम से कम यह बताना होगा कि तत्वों के योग को सम बनाने के लिए इसमें कितनी संख्याएँ जोड़ी जाएँगी। संख्या 0 से अधिक होनी चाहिए। इसलिए यदि तत्वों का योग विषम है, तो हम 1 जोड़ देंगे, लेकिन यदि योग पहले से ही सम है, तो हम इसे सम बनाने के लिए इसमें 2 जोड़ दें