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

C++ का उपयोग करके दो सरणियों का अतिव्यापी योग ज्ञात कीजिए

इस समस्या में, हमें दो सरणियाँ दी गई हैं arr1[] और arr2[] जिसमें अद्वितीय मान हैं। हमारा काम दो सरणियों का अतिव्यापी योग ज्ञात करना है।

सरणियों के सभी तत्व अलग हैं। और हमें उन तत्वों का योग वापस करना होगा जो दोनों सरणियों के लिए सामान्य हैं

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

इनपुट

arr1[] = {5, 4, 9, 2}, arr2[] = {6, 3, 9, 4}

आउटपुट

2

स्पष्टीकरण

The elements that are present in both arrays are 9 and 4.
The sum is 9 + 9 + 4 + 4 = 26

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

समस्या का एक आसान समाधान एक सरणी को arr1 [] कह रहा है और प्रत्येक तत्व के लिए जांचता है कि किसी अन्य सरणी में मिलान करने वाला मान है या नहीं। यदि वर्तमान मान से मेल खाने वाला कोई तत्व मिलता है, तो दोनों को योग मान में जोड़ें।

इस दृष्टिकोण के लिए लूप्स के नेस्टिंग की आवश्यकता होती है जो ऑर्डर O(N 2 की समय जटिलता की ओर ले जाता है) )।

समस्या को हल करने का एक अन्य तरीका हैशिंग का उपयोग करना है। हम एक हैश तालिका बनाएंगे और तालिका में दोनों सरणियों के मूल्यों को संग्रहीत करेंगे और तत्वों की आवृत्ति की गणना रखेंगे। फिर आवृत्ति आवृत्ति दो के साथ मान जोड़ें। योग मूल्य का दोगुना लौटाएं।

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
int findCommonValSum(int A[], int B[], int n){
   unordered_map<int,int> hashTable;
   for(int i=0;i<n;i++){
      if(hashTable.find(A[i])==hashTable.end())
      hashTable.insert(make_pair(A[i],1));
      else
         hashTable[A[i]]++;

      if(hashTable.find(B[i])==hashTable.end())
         hashTable.insert(make_pair(B[i],1));
      else
      hashTable[B[i]]++;
   }
   int commSum = 0;
   for(auto itr = hashTable.begin(); itr!=hashTable.end(); itr++){
      if((itr->second)==2){
         commSum += (itr->first);
      }
   }
   return (commSum*2);
}
int main(){
   int A[] = { 5, 4, 9, 2 };
   int B[] = { 6, 3, 9, 4 };
   int n = sizeof(A) / sizeof(A[0]);
   cout<<"The sum of common values in the array are "<<findCommonValSum(A, B, n);
   return 0;
}

आउटपुट

The sum of common values in the array are 26

  1. C++ का प्रयोग करते हुए N भाज्यों के योग के अंतिम दो अंक ज्ञात कीजिए।

    यहां हम देखेंगे कि अंतिम दो अंक कैसे प्राप्त करें। एन फैक्टोरियल के योग का इकाई स्थान अंक और दहाई स्थान अंक। अतः यदि N =4 है, तो यह 1 होगा! + 2! +3! +4! =33. अतः इकाई का स्थान 3 और दस का स्थान 3 है। परिणाम 33 होगा। 10 के बाद, दस स्थान 0 रहेंगे। N =10 और अधिक के लिए, यह 00 होगा। हम भाज्य संख्याओं के

  1. तत्वों की एक जोड़ी खोजें जो C++ में समान दो सरणियों का योग बनाता है

    विचार करें कि हमारे पास विभिन्न तत्वों के साथ दो सरणियाँ हैं। हमें तत्वों की एक जोड़ी (x, y) ढूंढनी है, जहां x पहली सरणी में मौजूद है, और y दूसरी सरणी में मौजूद है। जोड़ी को इस तरह चुना जाएगा कि इन दो सरणियों के बीच तत्वों की अदला-बदली के बाद, इन दो सरणियों का योग समान होगा। मान लीजिए कि पहली एरे ए

  1. सी ++ प्रोग्राम बाइनरी सर्च दृष्टिकोण का उपयोग करके अधिकतम सबएरे योग खोजने के लिए

    बाइनरी सर्च (लॉग एन) की रन-टाइम जटिलता के साथ एक तेज़ खोज एल्गोरिदम है। यह सर्च एल्गोरिदम फूट डालो और जीतो के सिद्धांत पर काम करता है। इस एल्गोरिथम के ठीक से काम करने के लिए, डेटा संग्रह क्रमबद्ध रूप में होना चाहिए। बाइनरी सर्च संग्रह के सबसे मध्य आइटम की तुलना करके किसी विशेष आइटम की तलाश करता है।