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

C++ का उपयोग करके दो सरणियों का ओवरलैपिंग योग खोजना

समस्या विवरण

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

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

उदाहरण

इनपुट

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

आउटपुट

26

व्याख्या

दोनों सरणियों में मौजूद तत्व 9 और 4 हैं। योग = 9 + 9 + 4 + 4 = 26

हल का दृष्टिकोण

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

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

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

C++ कार्यान्वयन

#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++) {
        hashTable[A[i]]++;
        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 << "सरणी में सामान्य मानों का योग है " << findCommonValSum(A, B, n);
    return 0;
}

आउटपुट

सरणी में सामान्य मानों का योग है 26

जटिलता विश्लेषण

  • समय जटिलता: O(N) औसत स्थिति में
  • स्पेस जटिलता: O(N)

वैकल्पिक दृष्टिकोण

यदि सरणियाँ क्रमबद्ध हैं, तो दो-पॉइंटर तकनीक O(N) समय और O(1) स्पेस में काम कर सकती है।

  1. C++ में N फैक्टोरियल के योग के अंतिम दो अंक ढूंढना C++ में N फैक्टोरियल के योग के अंतिम दो अंक ढूंढना

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

  1. - C++ में दो सरणियों के योग को बराबर करने वाली जोड़ी ढूंढें

    समस्या विवरण दो सरणियां दी गई हैं जिनमें अलग-अलग संख्या में तत्व हैं। हमें एक जोड़ी (x, y) ढूंढनी है जहां x पहली सरणी में है और y दूसरी सरणी में है। इस जोड़ी को स्वैप करने के बाद दोनों सरणियों का योग बराबर होना चाहिए। उदाहरण: सरणी A = [4, 1, 2, 2, 1, 1] (योग = 11) और सरणी B = [3, 3, 6, 3] (योग = 1

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

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