মনে করুন আমাদের 0 থেকে n-1 পর্যন্ত সংখ্যার একটি তালিকা আছে। একটি সংখ্যা যেকোনোবার পুনরাবৃত্ত হতে পারে। আমাদের এক্সট্রা স্পেস নেওয়া ছাড়া পুনরাবৃত্ত সংখ্যাগুলো খুঁজে বের করতে হবে। যদি n = 7 হয়, এবং তালিকা হয় [5, 2, 3, 5, 1, 6, 2, 3, 4, 5], তবে উত্তর হবে 5, 2, 3।
এটি সমাধানের জন্য, আমাদের নিচের ধাপগুলো অনুসরণ করতে হবে -
- তালিকার প্রতিটি উপাদান e-এর জন্য, নিচের ধাপগুলো করুন -
- sign := A[e-এর निरপেক্ষ মান]
- যদি sign ধনাত্মক হয়, তবে এটিকে ঋণাত্মক করুন
- অন্যথায়, এটি একটি পুনরাবৃত্তি।
উদাহরণ
#include <iostream>
#include <cmath>
using namespace std;
void findDuplicates(int arr[], int size) {
for (int i = 0; i < size; i++) {
if (arr[abs(arr[i])] >= 0)
arr[abs(arr[i])] *= -1;
else
cout << abs(arr[i]) << " ";
}
}
int main() {
int arr[] = {5, 2, 3, 5, 1, 6, 2, 3, 4, 1};
int n = sizeof(arr) / sizeof(arr[0]);
findDuplicates(arr, n);
}
আউটপুট
5 2 3 1