हमें पूर्णांक तत्वों वाले किसी भी आकार की एक सरणी दी गई है और कार्य उन तत्वों की गिनती की गणना करना है जो पहले सरणी में मौजूद हैं लेकिन दूसरे सरणी में नहीं हैं..
एक प्रकार की डेटा संरचना को व्यवस्थित करता है जो एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत कर सकता है। डेटा के संग्रह को संग्रहीत करने के लिए एक सरणी का उपयोग किया जाता है, लेकिन एक सरणी को उसी प्रकार के चर के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
उदाहरण के लिए
Input− int arr_1[] = {1, 2, 3, 4} Int arr_2[] = {1, 5, 6, 7, 8} Output − count is 3
स्पष्टीकरण − दिए गए arr_1 में हमारे पास 1, 2, 3 और 4 अवयव हैं और arr_2 में हमारे पास 1, 5, 6,7 और 8 हैं। अवयव 1 दोनों सरणियों में मौजूद है, इसलिए हम इसकी गणना नहीं करेंगे और इसलिए गिनती 3 हो जाती है।
Input − int arr_1[] = {10, 20, 30, 40, 50} Int arr_2[] = {10, 20, 30, 60} Output − count is 2
स्पष्टीकरण − दिए गए arr_1 में हमारे पास 10, 20, 30, 40 और 50 तत्व हैं और arr_2 में हमारे पास 10, 20, 30 और 60 हैं। तत्व 10, 20 और 30 दोनों सरणियों में मौजूद हैं, इसलिए हम गिनती नहीं करेंगे उन्हें और इसलिए गिनती 2 हो जाती है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
दो सरणियाँ बनाएँ मान लें, arr_1[] और arr_2[]
-
लंबाई () फ़ंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो एक सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
-
एक अस्थायी चर लें जो केवल पहली सरणी में मौजूद तत्वों की संख्या को संग्रहीत करेगा।
-
एक अनियंत्रित नक्शा बनाएं आइए बताते हैं
-
i से 0 तक के लिए लूप प्रारंभ करें जब तक कि arr_1 का आकार कम न हो जाए
-
1
. के साथ बढ़ाएँ[arr_1[i]] -
i से 0 तक के लिए एक और लूप प्रारंभ करें जब तक कि arr_2 का आकार कम न हो जाए
-
लूप के अंदर, जांचें कि क्या up.find(arr_2[i])!=up.end() और up[arr_2[i]]!=0
-
1 से ऊपर [arr_2[i]] घटाएं
-
i से 0 तक के लिए दूसरा लूप प्रारंभ करें जब तक कि arr_1 के आकार से कम न हो जाए
-
लूप के अंदर, जांचें कि क्या up[arr_1[i]!=0
-
फिर, गिनती को 1 से बढ़ाएँ और सेट करें[arr_1[i]] =0
-
गिनती लौटाएं
-
परिणाम प्रिंट करें।
उदाहरण
#include <iostream> #include<unordered_map> using namespace std; int elements_count(int arr_1[], int arr_2[], int m, int n){ bool f = false; int result = 0; // map to store frequency of elements present in a unordered_map<int, int> up; for (int i = 0; i < m; i++){ up[arr_1[i]]++; } // check if the elements of b // is present in b or not for (int i = 0; i < n; i++) if (up.find(arr_2[i]) != up.end() && up[arr_2[i]] != 0){ up[arr_2[i]]--; } // count the elements of a whose // frequency is more than b for (int i = 0; i < m; i++) { if (up[arr_1[i]] != 0){ result++; up[arr_1[i]] = 0; } } return result; } // Main function int main(){ int arr_1[] = { 2, 4, 4, 6, 6, 6, 8, 9 }; int arr_2[] = { 2, 2, 4, 6, 6 }; int m = sizeof(arr_1)/sizeof(arr_1[0]); int n = sizeof(arr_2)/sizeof(arr_2[0]); cout <<"count is "<<elements_count(arr_1, arr_2, m, n); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
count is 4