हमें दो सरणियाँ दी गई हैं जिनमें धनात्मक संख्याएँ और एक मान x है। लक्ष्य सरणी के तत्वों के जोड़े को ढूंढना है जैसे कि प्रकार (ए, बी) के जोड़े में ए + बी =एक्स है और ए पहली सरणी से संबंधित है और बी दूसरी सरणी से संबंधित है।
आइए उदाहरणों के साथ समझते हैं
इनपुट - arr_1[] ={1,2,5,3,4}; arr_2[] ={7,0,1,3}; x=6
आउटपुट −दो क्रमबद्ध सरणियों से युग्मों की संख्या जिनका योग किसी दिए गए मान x के बराबर है − 2
. हैस्पष्टीकरण - जोड़े हैं (5,1) - (arr_1[2],arr_2[2]) और (3,3) - (arr_1[3],arr_2[3])
इनपुट - arr_1[] ={1,1,1}; arr_2[] ={2,2}; x=6
आउटपुट - दो क्रमबद्ध सरणियों से जोड़े की संख्या जिनका योग किसी दिए गए मान x के बराबर है - 2
हैंस्पष्टीकरण - जोड़े हैं (1,2) - (arr_1[0],arr_2[0]) और (1,2) - (arr_1[1],arr_2[1])
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
हम दो दृष्टिकोणों का उपयोग करेंगे। लूप के लिए उपयोग करके पहला अनुभवहीन दृष्टिकोण। लूप के लिए दोनों का उपयोग करके ट्रैवर्सिंग शुरू करें जैसे कि इंडेक्स i arr_1 [] के लिए है और इंडेक्स j arr_2 [] के लिए है। जोड़ी के लिए (arr_1[i]+arr_2[j]==x), वेतन वृद्धि की संख्या। परिणाम के रूप में वापसी की गिनती।
-
सकारात्मक तत्वों और लंबाई जैसे size_arr_1 और size_arr_2 के साथ एक पूर्णांक सरणी arr_1[] और arr_2[] लें।
-
फ़ंक्शन Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x) दोनों सरणियों और उनकी लंबाई लेता है और जोड़े को इस तरह लौटाता है कि तत्वों का योग x है।
-
गिनती का प्रारंभिक मान 0 के रूप में लें।
-
arr_1[] को i=0 से i
तक ट्रैवर्स करना प्रारंभ करें -
प्रत्येक जोड़ी के लिए arr_1[i], arr_2[j], जांचें कि क्या योग x है। अगर सही है, तो इंक्रीमेंट काउंट.
-
परिणाम के रूप में वापसी की गिनती।
कुशल दृष्टिकोण
इस दृष्टिकोण में हम arr_1 के तत्वों का एक unordered_set बनाएंगे। अब लूप के लिए और प्रत्येक मान arr_2[i] का उपयोग करके arr_2 को पार करें, यदि x-arr_2[i] सेट में पाया जाता है तो वृद्धि गणना। अंत में वापसी की गिनती।
-
समान सरणियाँ और उनके आकार लें।
-
फ़ंक्शन Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x) दोनों सरणियों और उनकी लंबाई लेता है और जोड़े को इस तरह लौटाता है कि तत्वों का योग x है।
-
प्रारंभिक गणना 0 के रूप में लें।
-
arr_1 के अद्वितीय तत्वों को संग्रहीत करने के लिए unordered_set
hash_map बनाएं। -
लूप के लिए उपयोग करके arr_1 के तत्वों के साथ हैश_मैप को पॉप्युलेट करें।
-
अब लूप के लिए उपयोग करके arr_2[] को पार करें।
-
प्रत्येक arr-2[j] के लिए, यदि x-arr_2[j] हैश_मैप में (hash_map.find(x - arr_2[j]) !=hash_map.end ()) का उपयोग करके पाया जाता है, तो वृद्धि गणना।
-
अंत में योग के साथ जोड़े की गणना x के बराबर होती है।
-
परिणाम के रूप में वापसी की गिनती।
उदाहरण (बेवकूफ दृष्टिकोण)
#include <bits/stdc++.h> using namespace std; int Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x){ int count = 0; for (int i = 0; i < size_arr_1; i++){ for (int j = 0; j < size_arr_2; j++){ if ((arr_1[i] + arr_2[j]) == x){ count++; } } } return count; } int main(){ int arr_1[] = {1, 2, 3, 4}; int arr_2[] = {2, 3, 4, 5}; int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]); int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]); int x = 6; cout<<"Count of pairs from two sorted arrays whose sum is equal to a given value x are: "<< Pair_value_x(arr_1, arr_2, size_arr_1 , size_arr_2, x); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of pairs from two sorted arrays whose sum is equal to a given value x are: 4
उदाहरण (कुशल दृष्टिकोण)
#include <bits/stdc++.h> using namespace std; int Pair_value_x(int arr_1[], int arr_2[], int size_arr_1, int size_arr_2, int x){ int count = 0; unordered_set<int> hash_map; for (int i = 0; i < size_arr_1; i++){ hash_map.insert(arr_1[i]); } for (int j = 0; j < size_arr_2; j++){ if (hash_map.find(x - arr_2[j]) != hash_map.end()){ count++; } } return count; } int main(){ int arr_1[] = {1, 2, 3, 4}; int arr_2[] = {2, 3, 4, 5}; int size_arr_1 = sizeof(arr_1) / sizeof(arr_1[0]); int size_arr_2 = sizeof(arr_2) / sizeof(arr_2[0]); int x = 6; cout<<"Count of pairs from two sorted arrays whose sum is equal to a given value x are: "<< Pair_value_x(arr_1, arr_2, size_arr_1 , size_arr_2, x); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Count of pairs from two sorted arrays whose sum is equal to a given value x are: 4