हमें किसी भी आकार की एक असॉर्टेड सरणी दी गई है जिसमें दोहराव वाले तत्व हैं और कार्य सरणी में विशिष्ट तत्वों की संख्या की गणना करना है।
सरणी एक प्रकार की डेटा संरचना है जो एक ही प्रकार के तत्वों का एक निश्चित आकार का अनुक्रमिक संग्रह संग्रहीत कर सकती है। एक सरणी का उपयोग डेटा के संग्रह को संग्रहीत करने के लिए किया जाता है, लेकिन एक सरणी को एक ही प्रकार के चरों के संग्रह के रूप में सोचना अक्सर अधिक उपयोगी होता है।
उदाहरण के लिए
इनपुट- int arr[] = {1, 1, 2, 3, 3, 4, 4} आउटपुट - गिनती 4 है
व्याख्या - दी गई सरणी में 4 विशिष्ट तत्व हैं और वे 1, 2, 3, 4 हैं लेकिन सरणी का आकार 7 है क्योंकि इसमें दोहराव वाले तत्व हैं और हमारा कार्य डुप्लिकेट को हटाकर सरणी तत्वों की गिनती करना था।
इनपुट - int arr[] = {1, 2, 3, 4, 5, 5, 5, 5} आउटपुट - गिनती 5 है
व्याख्या - दी गई सरणी में 5 विशिष्ट तत्व हैं और वे 1, 2, 3, 4 और 5 हैं लेकिन सरणी का आकार 8 है क्योंकि इसमें दोहराव वाले तत्व हैं और हमारा कार्य डुप्लिकेट को हटाकर सरणी तत्वों की गिनती करना था।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
सॉर्ट फंक्शन () का उपयोग करके
एक सरणी बनाएं, मान लीजिए arr[]
length() फंक्शन का उपयोग करके सरणी की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
सॉर्ट फंक्शन को कॉल करें और पैरामीटर के रूप में सरणी और सरणी का आकार पास करें।
एक अस्थायी चर लें जो विशिष्ट तत्वों की गिनती को संग्रहीत करेगा।
i को 0 से शुरू करके और i के सरणी के आकार से कम होने तक लूप शुरू करें
लूप के अंदर, while i < size-1 और arr[i] = arr[i+1] चलाएं
while के अंदर, i के मान को बढ़ाएं
और for के अंदर, count के मान को बढ़ाएं
count लौटाएं
परिणाम प्रिंट करें।
बिना सॉर्टिंग के
एक सरणी बनाएं, मान लीजिए arr[]
length() फंक्शन का उपयोग करके सरणी की लंबाई की गणना करें जो सरणी में तत्वों के अनुसार एक पूर्णांक मान लौटाएगा।
एक अस्थायी चर लें जो विशिष्ट तत्वों की गिनती को संग्रहीत करेगा।
i को 1 से शुरू करके और i के सरणी के आकार से कम होने तक लूप शुरू करें
लूप के अंदर, j को 0 पर सेट करें और j को 0 से शुरू करके और j के i से कम होने तक और j को 1 से बढ़ाते हुए एक और लूप शुरू करें
इस लूप के अंदर, जांचें कि क्या arr[i] = arr[j] है तो ब्रेक करें
इस लूप के अंदर, जांचें कि क्या i = j है तो count को 1 से बढ़ाएं
count लौटाएं
परिणाम प्रिंट करें।
उदाहरण
सॉर्टिंग के साथ
#include <algorithm>
#include <iostream>
using namespace std;
int distinct_elements(int arr[], int n) {
// सरणी को सॉर्ट करना
sort(arr, arr + n);
// सॉर्ट की गई सरणी को पार करना
int count = 0;
for (int i = 0; i < n; i++) {
// डुप्लिकेट मिलने पर इंडेक्स को आगे बढ़ाना
while (i < n - 1 && arr[i] == arr[i + 1]) {
i++;
}
count++;
}
return count;
}
// मुख्य फंक्शन
int main() {
int arr[] = {3, 6, 5, 8, 2, 3, 4};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "count is " << distinct_elements(arr, n);
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्नलिखित आउटपुट मिलेगा -
count is 6
उदाहरण
बिना सॉर्टिंग के
#include <iostream>
using namespace std;
int countDistinct(int a[], int size) {
int i, j, count = 1;
for (i = 1; i < size; i++) {
for (j = 0; j < i; j++) {
if (a[i] == a[j]) {
break;
}
}
if (i == j) {
count++;
}
}
return count;
}
// मुख्य फंक्शन
int main() {
int a[] = {3, 6, 5, 8, 2, 3, 4};
int size = sizeof(a) / sizeof(a[0]);
cout << "count is " << countDistinct(a, size);
return 0;
}
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्नलिखित आउटपुट मिलेगा -
count is 6