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

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


मान लीजिए कि हमारे पास दो सरणियाँ हैं; हमें उनके चौराहे खोजने होंगे।

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

होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • दो मानचित्रों को परिभाषित करें mp1, mp2

  • एक सरणी रेस परिभाषित करें

  • nums1 में x के लिए

    • (mp1[x] 1 से बढ़ाएं)

  • nums2 में x के लिए

    • (mp2[x] 1 से बढ़ाएं)

  • mp1 में प्रत्येक कुंजी-मान युग्म x के लिए

    • सीएनटी:=0

    • cnt :=x और mp2 का न्यूनतम मान [x की कुंजी]

    • अगर cnt> 0, तो -

      • रेस के अंत में x की कुंजी डालें

  • रिटर्न रेस

उदाहरण

एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> 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;
      }
};
main(){
   Solution ob;
   vector<int> v = {1,5,3,6,9}, v1 = {2,8,9,6,7};
   print_vector(ob.intersection(v, v1));
}

इनपुट

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

आउटपुट

[9, 6, ]

  1. दो सरणियों का प्रतिच्छेदन जावास्क्रिप्ट

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

  1. सी / सी ++ में बहुआयामी सरणी

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

  1. C++ में दो लिंक्ड सूचियों का प्रतिच्छेदन

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