हमें किसी भी आकार की एक सरणी दी गई है जिसमें पूर्णांक तत्व हैं और कार्य उन तत्वों की संख्या की गणना करना है जो पहली सरणी में मौजूद हैं लेकिन दूसरी सरणी में नहीं।
सरणी एक प्रकार की डेटा संरचना है जो एक ही प्रकार के तत्वों का एक निश्चित आकार का अनुक्रमिक संग्रह संग्रहीत कर सकती है। एक सरणी का उपयोग डेटा के संग्रह को संग्रहीत करने के लिए किया जाता है, लेकिन एक सरणी को एक ही प्रकार के चरों के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
उदाहरण के लिए
इनपुट- int arr_1[] = {1, 2, 3, 4} Int arr_2[] = {1, 5, 6, 7, 8} आउटपुट - गिनती 3 है
व्याख्या - दी गई arr_1 में हमारे पास तत्व 1, 2, 3 और 4 हैं और arr_2 में हमारे पास 1, 5, 6, 7 और 8 हैं। तत्व 1 दोनों सरणियों में मौजूद है इसलिए, हम इसे नहीं गिनेंगे और इसलिए गिनती 3 हो जाती है।
इनपुट - int arr_1[] = {10, 20, 30, 40, 50} Int arr_2[] = {10, 20, 30, 60} आउटपुट - गिनती 2 है
व्याख्या - दी गई arr_1 में हमारे पास तत्व 10, 20, 30, 40 और 50 हैं और arr_2 में हमारे पास 10, 20, 30 और 60 हैं। तत्व 10, 20 और 30 दोनों सरणियों में मौजूद हैं इसलिए, हम उन्हें नहीं गिनेंगे और इसलिए गिनती 2 हो जाती है।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
दो सरणियाँ बनाएं, मान लीजिए arr_1[] और arr_2[]
length() फंक्शन का उपयोग करके दोनों सरणियों की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
एक अस्थायी चर लें जो केवल पहली सरणी में मौजूद तत्वों की गिनती को संग्रहीत करेगा।
एक अनऑर्डर्ड मैप बनाएं, मान लीजिए up
i को 0 से शुरू करके i के arr_1 के आकार से कम होने तक लूप शुरू करें
up[arr_1[i]] को 1 से बढ़ाएं
i को 0 से शुरू करके i के arr_2 के आकार से कम होने तक एक और लूप शुरू करें
लूप के अंदर, जांचें कि क्या up.find(arr_2[i])!=up.end() और up[arr_2[i]]!=0 है
up[arr_2[i]] को 1 से घटाएं
i को 0 से शुरू करके i के arr_1 के आकार से कम होने तक एक और लूप शुरू करें
लूप के अंदर, जांचें कि क्या up[arr_1[i]!=0 है
फिर, count को 1 से बढ़ाएं और up[arr_1[i]] = 0 सेट करें
count लौटाएं
परिणाम प्रिंट करें।
उदाहरण
#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;
// a में मौजूद तत्वों की आवृत्ति संग्रहीत करने के लिए मैप
unordered_map<int, int> up;
for (int i = 0; i < m; i++) {
up[arr_1[i]]++;
}
// जांचें कि क्या b के तत्व
// b में मौजूद हैं या नहीं
for (int i = 0; i < n; i++)
if (up.find(arr_2[i]) != up.end() && up[arr_2[i]] != 0) {
up[arr_2[i]]--;
}
// उन तत्वों की गिनती करें जिनकी आवृत्ति b से अधिक है
for (int i = 0; i < m; i++) {
if (up[arr_1[i]] != 0) {
result++;
up[arr_1[i]] = 0;
}
}
return result;
}
// मुख्य फंक्शन
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