ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। আমরা সদৃশ উপাদান অপসারণ করতে চান. আমরা অ্যারের প্রতিটি উপাদানের জন্য শুধুমাত্র ডানদিকের এন্ট্রি ছেড়ে দিতে চাই। অবশিষ্ট অনন্য উপাদানগুলির আপেক্ষিক ক্রম পরিবর্তন করা উচিত নয়৷
সুতরাং, যদি ইনপুটটি A =[1, 5, 5, 1, 6, 1] এর মত হয়, তাহলে আউটপুট হবে [5, 6, 1]
পদক্ষেপ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
Define two arrays b and vis of size: 1200 each x := 0 n := size of A for initialize i := n - 1, when i >= 0, update (decrease i by 1), do: if vis[A[i]] is zero, then: b[x] := A[i] (increase x by 1) vis[A[i]] := 1 for initialize i := x - 1, when i >= 0, update (decrease i by 1), do: print b[i]
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; void solve(vector<int> A) { int b[1200], vis[1200], x = 0; int n = A.size(); for (int i = n - 1; i >= 0; i--) { if (!vis[A[i]]) { b[x] = A[i]; x++; vis[A[i]] = 1; } } for (int i = x - 1; i >= 0; i--) cout << b[i] << ", "; } int main() { vector<int> A = { 1, 5, 5, 1, 6, 1 }; solve(A); }
ইনপুট
{ 1, 5, 5, 1, 6, 1 }
আউটপুট
5, 6, 1,