इस समस्या में, हमें पूर्णांक मानों की एक सरणी दी जाती है। हमारा काम सरणी के सभी अलग-अलग तत्वों को प्रिंट करना है। आउटपुट में केवल विशिष्ट मान होने चाहिए।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: array = {1, 5, 7, 12, 1, 6, 10, 7, 5} Output: 1 5 7 12 6 10
इस समस्या को हल करने के लिए, हमें अद्वितीयता के लिए सरणी के तत्वों की जांच करनी होगी। इसके लिए, हम दो नेस्टेड लूप का उपयोग करेंगे, बाहरी एक मान लेगा और आंतरिक इसके साथ शेष मूल्यों की जांच करेगा। यदि एक से अधिक मान बाहर निकलते हैं तो केवल एक ही प्रिंट करें।
उदाहरण
यह कोड हमारे समाधान के कार्यान्वयन को दर्शाता है,
#include <iostream> using namespace std; void printDistinctValues(int arr[], int n) { for (int i=0; i<n; i++){ int j; for (j=0; j<i; j++) if (arr[i] == arr[j]) break; if (i == j) cout<<arr[i]<<"\t"; } } int main(){ int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5}; int n = sizeof(arr)/sizeof(arr[0]); cout<<"Distinct values of the array are :\n"; printDistinctValues(arr, n); return 0; }
आउटपुट
Distinct elements of the array are − 1 5 6 7 10 12
यह समाधान आसान है लेकिन दो लूप का उपयोग करता है जो n 2 के क्रम की जटिलता को बनाते हैं ।
एक अधिक जटिल विधि छँटाई का उपयोग करेगी। क्रमबद्ध सरणी में, समान संख्याओं की घटना क्रमागत हो जाती है। अब, हम अलग-अलग तत्वों को आसानी से प्रिंट कर सकते हैं और इसमें कम जगह लगती है।
उदाहरण
हमारे तर्क का कार्यान्वयन -
#include <bits/stdc++.h> using namespace std; void printDistinctElements(int arr[], int n){ sort(arr, arr + n); for (int i=0; i<n; i++){ while (i < n-1 && arr[i] == arr[i+1]) i++; cout<<arr[i]<<"\t"; } } int main(){ int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5}; int n = sizeof(arr)/sizeof(arr[0]); cout<<"Distinct elements of the array are :\n"; printDistinctElements(arr, n); return 0; }
आउटपुट
Distinct elements of the array are − 1 5 6 7 10 12
सरणी के विज़िट किए गए तत्वों का ट्रैक रखते हुए एक और अधिक प्रभावी समाधान हैं। हम सरणी को पार करेंगे और सरणी के सभी विज़िट किए गए तत्वों का ट्रैक रखेंगे।
उदाहरण
यह कोड हमारे समाधान के कार्यान्वयन को दर्शाता है,
#include<bits/stdc++.h> using namespace std; void printDistinctElements(int arr[],int n) { unordered_set<int> visited; for (int i=0; i<n; i++){ if (visited.find(arr[i])==visited.end()){ visited.insert(arr[i]); cout<<arr[i]<<"\t"; } } } int main () { int arr[] = {1, 5, 7, 12, 1, 6, 10, 7, 5}; int n=7; cout<<"Distinct numbers of the array are :\n"; printDistinctElements(arr,n); return 0; }
आउटपुट
Distinct numbers of the array are − 1 5 7 12 6 10