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

C++ में दो सरणियों का प्रतिच्छेदन


समस्या विवरण

मान लीजिए हमारे पास दो सरणियाँ हैं; हमें उनका प्रतिच्छेदन ज्ञात करना है।

उदाहरण

यदि इनपुट है: [1,5,3,6,9], [2,8,9,6,7], तो आउटपुट होगा [9,6]

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

इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:

  • दो मैप mp1, mp2 परिभाषित करें
  • एक सरणी res परिभाषित करें
  • nums1 में प्रत्येक x के लिए:
    • mp1[x] को 1 से बढ़ाएं
  • nums2 में प्रत्येक x के लिए:
    • mp2[x] को 1 से बढ़ाएं
  • mp1 में प्रत्येक कुंजी-मान जोड़ी x के लिए:
    • cnt := 0
    • cnt := x के मान और mp2[x की कुंजी] का न्यूनतम
    • यदि cnt > 0:
      • x की कुंजी को res के अंत में डालें
  • res लौटाएं

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

#include <bits/stdc++.h>
using namespace std;

void print_vector(vector<int> v) {
    cout << "[";
    for(int i = 0; i < v.size(); i++) {
        cout << v[i] << ", ";
    }
    cout << "]" << endl;
}

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_map<int, int> mp1, mp2;
        vector<int> res;
        for (auto x : nums1)
            mp1[x]++;
        for (auto x : nums2)
            mp2[x]++;
        for (auto x : mp1) {
            int cnt = 0;
            cnt = min(x.second, mp2[x.first]);
            if (cnt > 0)
                res.push_back(x.first);
        }
        return res;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1,5,3,6,9}, v1 = {2,8,9,6,7};
    print_vector(ob.intersection(v, v1));
    return 0;
}

इनपुट

{1,5,3,6,9},{2,8,9,6,7}

आउटपुट

[9, 6, ]
  1. - JavaScript में दो एरे का इंटरसेक्शन

    हमारे पास नंबरों के दो एरे हैं, और हमें एक फ़ंक्शन लिखना आवश्यक है, मान लीजिए intersection() जो उनके इंटरसेक्शन की गणना करता है और एक एरे लौटाता है जिसमें किसी भी क्रम में इंटरसेक्टिंग तत्व होते हैं। परिणाम में प्रत्येक तत्व उतनी बार प्रकट होना चाहिए जितनी बार वह दोनों एरे में दिखाई देता है।उदाहरण क

  1. C/C++ में मल्टीडायमेंशनल ऐरे C/C++ में मल्टीडायमेंशनल ऐरे

    C/C++ में, मल्टीडायमेंशनल ऐरे को सरल शब्दों में ऐरे के ऐरे के रूप में परिभाषित किया जाता है। मल्टीडायमेंशनल ऐरे में डेटा टेबुलर फॉर्म में स्टोर होता है (रो मेजर ऑर्डर में)। निम्नलिखित डायग्राम 3 x 3 x 3 डायमेंशन वाले मल्टीडायमेंशनल ऐरे के लिए मेमोरी आवंटन रणनीति दिखाता है। एल्गोरिदम Begin ऐर

  1. C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन C++ में दो लिंक्ड लिस्ट का इंटरसेक्शन

    लिंक्ड लिस्ट एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड के दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरा ब्लॉक अगले फील्ड का पता रखता है। मान लीजिए हमारे पास एक लिंक्ड लिस्ट है जैसे कि प्रत्येक नोड में एक रैंडम पॉइंटर होता है जो लिस्ट में अन्य नोड्स की ओर इंगित करता है।