এই সমস্যায় একটি ইন্টিজার অ্যারে দেওয়া আছে। আমাদের অ্যারের সব স্বতন্ত্র উপাদান প্রিন্ট করতে হবে। আউটপুটে শুধু স্বতন্ত্র মান থাকবে।
উদাহরণ
ইনপুট: array = {1, 5, 7, 12, 1, 6, 10, 7, 5}
আউটপুট: 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
এই সমাধানটি সহজ কিন্তু দুটি লুপ ব্যবহারের কারণে এর জটিলতা n2-এর কোটিতে।
পদ্ধতি ২: সর্টিং ব্যবহার করে
সর্ট করা অ্যারেতে একই সংখ্যাগুলোর występণ egymার পাশে থাকে। এখন স্বতন্ত্র উপাদানগুলো সহজে প্রিন্ট করা যায় এবং এটি কম স্পেস নেয়।
বাস্তবায়ন
#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