সংক্ষিপ্ত বিবরণ
এই প্রোগ্রামটি একটি অ্যারেতে কোন এলিমেন্টগুলো একাধিকবার আসছে সেগুলো খুঁজে বের করে।
অ্যালগরিদম (কাউন্টিং মেথড)
- অ্যারে আকার অনুযায়ী কাউন্ট অ্যারে আলোকেট করুন (calloc দিয়ে শূন্য আরম্ভ)
- প্রতিটি এলিমেন্টের জন্য কাউন্ট বাড়ান
- যদি কাউন্ট ১ হয়ে যায়, সেটি ডুপ্লিকেট — প্রিন্ট করুন
উদাহরণ
Input: {5, 11, 11, 2, 1, 4, 2}
Output: 11 2
সি কোড
#include <stdio.h>
#include <stdlib.h>
int main() {
int arr[] = {21, 87, 212, 109, 41, 21};
int n = sizeof(arr)/sizeof(arr[0]);
int *count = calloc(n, sizeof(int)); // ধরে নেওয়া হয়েছে ভ্যালু < n
printf("Repeated elements: ");
for (int i = 0; i < n; i++) {
if (count[arr[i]] == 1)
printf("%d ", arr[i]);
else
count[arr[i]]++;
}
printf("\n");
free(count);
return 0;
}
আউটপুট
Repeated elements: 21
সীমাবদ্ধতা: এই পদ্ধতিটি তখনই কাজ করবে যখন অ্যারে ভ্যালুগুলো ০ থেকে n-1 এর মধ্যে থাকে। সাধারণ ক্ষেত্রে হ্যাশ টেবিল বা সেট ব্যবহার করা উচিত।