हमें दो सरणियाँ Arr1[] और Arr2[] और एक संख्या K दी गई है। लक्ष्य दोनों सरणियों के तत्वों के अद्वितीय जोड़े को खोजना है जैसे कि उनका योग K है। जोड़े फॉर्म के होंगे ( Arr1[i], Arr2[j ] ) जहां Arr1[i]+Arr2[j]==K.
हम i और j के लिए दो लूपों का उपयोग करके पार करेंगे। यदि योग (Arr1[i]+Arr2[j])==K. और जोड़ी unordered_map
आइए उदाहरणों से समझते हैं।
इनपुट
Arr1[]={ 1,3,2,4,3,2 }; Arr2[]={ 0,2,1,2,3 }; K=4
आउटपुट
Number of pairs with sum K : 4
स्पष्टीकरण
Pairs will be ( Arr1[0], Arr2[4] ) → (1,3) ( Arr1[1], Arr2[2] ) → (3,1) ( Arr1[2], Arr2[1] ) → (2,2) ( Arr1[3], Arr2[2] ) → (3,1) All other pairs already exist.Total unique pairs 4.
इनपुट
Arr1[]={ 0,2,1,2,3}; Arr2[]={ 1,1,1,1,1 }; K=3
आउटपुट
Number of pairs with sum K : 1
स्पष्टीकरण
Pairs will be ( Arr1[1], Arr2[0] ) → (2,1) All other pairs already exist.Total unique pairs 1.
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम योग के लिए दो सरणियाँ Arr1[] और Arr2[] और एक चर K लेते हैं।
-
दोनों सरणियों की लंबाई को दर्शाने के लिए Len1 और Len2 का उपयोग किया जाता है।
-
फ़ंक्शन जोड़ेसुमिसके(int arr1[],int arr2[],int k,int l1,int l2) सभी चर लेता है और sum=k के साथ दोनों सरणियों से तत्वों के अद्वितीय जोड़े की गिनती देता है।
-
जोड़े के लिए प्रारंभिक चर गणना को 0 के रूप में लें।
-
अद्वितीय जोड़ियों को संग्रहित करने के लिए unordered_map umap लें।
-
लूप के लिए दो का उपयोग करके दोनों सरणियों को पार करें।
-
arr1[] में तत्वों के लिए i=0 से i
-
जाँच करें कि क्या योग arr1[i]+arr2[j]=k. यदि हाँ, तो जाँच करें कि क्या यह जोड़ी umap.find(...)==umap.end() के माध्यम से मौजूद है।
-
यदि यह इस जोड़ी को umap और वृद्धि गणना में नहीं जोड़ता है।
-
सभी लूपों के अंत में गिनती में ऐसे जोड़ों की कुल संख्या होगी।
-
परिणाम के रूप में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int pairsumisK(int arr1[],int arr2[],int k,int l1,int l2){ int count = 0; unordered_map<int, int> umap; for (int i = 0; i < l1; i++){ for (int j = 0; j < l2; j++){ int sum=arr1[i]+arr2[j]; if(sum==k) //pairs with sum=k only{ if(umap.find(arr1[i]) == umap.end()) //unique pairs only{ umap.insert(make_pair(arr1[i],arr2[j])); } } } } return count; } int main(){ int Arr1[]={ 1,2,3,0,2,4 }; int Arr2[]={ 3,2,5,2 }; int len1=sizeof(Arr1)/sizeof(Arr1[0]); int len2=sizeof(Arr2)/sizeof(Arr2[0]); int K=5; //length of array cout <<endl<< "Number of pairs with sum K : "<<pairsumisK(Arr1,Arr2,K,len1,len2); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Number of pairs with sum K : 0