ধরা যাক আমরা একটি অ্যারের 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' হিসাবে তৈরি করুন এবং এটিকে ফলাফলে সন্নিবেশ করুন অন্যথায় উপাদান সন্নিবেশ করার প্রয়োজন নেই৷
-
উপাদান সহ ভেক্টর অ্যারের N আকারের ইনপুট নিন।
-
একটি পূর্ণসংখ্যা ভেক্টর অ্যারে রিমুভ করে ডুপ্লিকেট (ভেক্টর
&arr, int সাইজ) যা একটি অ্যারে এবং এর আকার একটি ইনপুট হিসাবে নেয়। -
একটি পূর্ণসংখ্যা অ্যারে যা আমরা আমাদের বর্তমান উপাদান পরিদর্শন করা হয়েছে কিনা তা সনাক্ত এবং যাচাই করতে ব্যবহার করি। সন্নিবেশ করার সময় যদি অ্যারের মধ্যে কোনো উপাদান পরিদর্শন করা হয় (যেমন, '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।