मान लीजिए कि हमने एक सरणी N आकार दिया है जिसमें सभी अभाज्य संख्याएँ हैं। कार्य दिए गए सरणी में डुप्लिकेट ढूंढना और उन्हें निकालना है। उदाहरण के लिए,
इनपुट-1 -
N = 8 arr[ ] = { 2 ,2 ,2 ,3 ,3 ,3 ,5 ,7 }
आउटपुट -
2 3 5 7
स्पष्टीकरण - अभाज्य संख्याओं के दिए गए सरणी में '2' और '3' के कुछ डुप्लीकेट हैं, डुप्लीकेट को हटाने के बाद आउटपुट 2 3 5 7 होगा।
इनपुट-2 -
N = 5 arr[ ] = { 3, 2, 7, 5, 5}
आउटपुट -
3 2 7 5
स्पष्टीकरण - अभाज्य संख्याओं के दिए गए सरणी में '5' के कुछ डुप्लीकेट हैं, डुप्लीकेट को हटाने के बाद आउटपुट 3 2 7 5 होगा।
इस समस्या को हल करने का तरीका
इस समस्या में, हम एक संख्या सरणी का उपयोग करते हैं जो सत्यापित करेगी कि संख्या सरणी में देखी गई है या नहीं। यदि ऐरे एलिमेंट का दौरा नहीं किया गया है, तो इसे '1' के रूप में बनाएं और इसे परिणाम में डालें अन्यथा तत्व डालने की कोई आवश्यकता नहीं है।
-
तत्वों के साथ वेक्टर सरणी के एन आकार का इनपुट लें।
-
एक पूर्णांक वेक्टर ऐरे रिमूव डुप्लीकेट्स(वेक्टर
&arr, int size) जो एक इनपुट के रूप में एक ऐरे और उसके आकार को लेता है। -
एक पूर्णांक सरणी जिसका उपयोग हम यह पता लगाने और सत्यापित करने के लिए करते हैं कि हमारे वर्तमान तत्व का दौरा किया गया है या नहीं। यदि सम्मिलित करते समय किसी भी तत्व का दौरा किया जाता है (अर्थात, '1'), तो हम उस विशेष तत्व को वेक्टर में नहीं धकेलेंगे अन्यथा तत्व को वेक्टर सरणी में धकेलेंगे।
-
परिणामी सदिश में केवल अद्वितीय अभाज्य संख्याएँ होंगी।
उदाहरण
#include<bits/stdc++.h> using namespace std; vector<int>removeDuplicates(vector<int>&arr, int size){ int num[100] ={0}; vector<int> vec; for(int i=0;i<size;i++){ if(num[arr[i]] ==0){ num[arr[i]]=1; vec.push_back(arr[i]); } } return vec; } int main(){ int N= 8; vector<int>arr={2,2,2,3,3,3,5,7}; vector<int>answer= removeDuplicates(arr,N); for(int i=0;i<answer.size();i++){ cout<<removeDuplicates(arr,N)<<endl; } return 0; }
आउटपुट
यदि हम उपरोक्त कोड को चलाएंगे तो यह आउटपुट को इस रूप में प्रिंट करेगा,
2 3 5 7
अगर हम डुप्लीकेट हटाते हैं, तो आउटपुट 2 3 5 7 होगा।