हमें दो सरणी 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 आउटपुट
योग K वाले जोड़ों की संख्या: 4
व्याख्या
जोड़े होंगे (Arr1[0], Arr2[4]) -> (1,3) (Arr1[1], Arr2[2]) -> (3,1) (Arr1[2], Arr2[1]) -> (2,2) (Arr1[3], Arr2[2]) -> (3,1) अन्य सभी जोड़े पहले से मौजूद हैं। कुल अद्वितीय जोड़े 4।
इनपुट
Arr1[]={ 0,2,1,2,3}; Arr2[]={ 1,1,1,1,1 }; K=3 आउटपुट
योग K वाले जोड़ों की संख्या: 1
व्याख्या
जोड़े होंगे (Arr1[1], Arr2[0]) -> (2,1) अन्य सभी जोड़े पहले से मौजूद हैं। कुल अद्वितीय जोड़े 1।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
हम दो सरणी Arr1[] और Arr2[] और योग के लिए चर K लेते हैं।
Len1 और Len2 दोनों सरणियों की लंबाई दर्शाने के लिए उपयोग किए जाते हैं।
फ़ंक्शन pairsumisK(int arr1[],int arr2[],int k,int l1,int l2) सभी चर लेता है और दोनों सरणियों के तत्वों के अद्वितीय जोड़े की संख्या लौटाता है जिनका योग=k है।
प्रारंभिक चर count को 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) //केवल योग=k वाले जोड़े{ if(umap.find(arr1[i]) == umap.end()) //केवल अद्वितीय जोड़े{ 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; //सरणी की लंबाई cout <<endl<< "योग K वाले जोड़ों की संख्या: "<<pairsumisK(Arr1,Arr2,K,len1,len2); return 0; } आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
योग K वाले जोड़ों की संख्या: 0