কম্পিউটার টিউটোরিয়াল

C#-এ ইন্টিজার অ্যারে-এ সব ডুপ্লিকেট এলিমেন্ট খুঁজে বের করা (Dictionary)

Dictionary<TKey, int> ব্যবহার করে অ্যারেতে প্রতিটি সংখ্যার ফ্রিকোয়েন্সি গণনা করা যায়। এরপর কাউন্ট > ১ হলে ডুপ্লিকেট।

এলগরিদম

  1. খালি Dictionary<int, int> তৈরি করুন।
  2. অ্যারে লুপ করুন: কি থাকলে কাউন্ট বাড়ান, নাই면 ১ সেট করুন।
  3. ডিকশনারি ইটারেট করে কাউন্ট > ১ موارد প্রিন্ট করুন।

সম্পূর্ণ উদাহরণ


using System;
using System.Collections.Generic;

class FindAllDuplicatesDemo
{
    public static void Main()
    {
        int[] arr = { 24, 10, 56, 32, 10, 43, 88, 32 };
        
        var freq = new Dictionary<int, int>();
        foreach (var num in arr)
        {
            if (freq.ContainsKey(num))
                freq[num]++;
            else
                freq[num] = 1;
        }
        
        Console.WriteLine("এলিমেন্ট\t\tআবৃত্তি");
        foreach (var kvp in freq)
        {
            Console.WriteLine($"{kvp.Key}\t\t\t{kvp.Value} বার");
        }
        
        Console.WriteLine("\nশুধু ডুপ্লিকেট:");
        foreach (var kvp in freq.Where(k => k.Value > 1))
            Console.WriteLine($"{kvp.Key} ({kvp.Value} বার)");
    }
}

আউটপুট


এলিমেন্ট		আবৃত্তি
24			1 বার
10			2 বার
56			1 বার
32			2 বার
43			1 বার
88			1 বার

শুধু ডুপ্লিকেট:
10 (2 বার)
32 (2 বার)

LINQ বিকল্প (সংক্ষিপ্ত)


var duplicates = arr
    .GroupBy(x => x)
    .Where(g => g.Count() > 1)
    .Select(g => new { Value = g.Key, Count = g.Count() });

foreach (var d in duplicates) Console.WriteLine($"{d.Value}: {d.Count} times");

তুলনা

পদ্ধতিসময়স্পেসপঠনযোগ্যতা
Dictionary (লুপ)O(n)O(k)মধ্যম
LINQ GroupByO(n)O(k)উচ্চ
  1. পাইথন প্রোগ্রাম: অ্যারের ডুপ্লিকেট উপাদানগুলো প্রিন্ট করা

  2. পাইথনে বাইনারি ট্রির সব নোডের মান যোগফল বের করা

  3. পাইথনে স্ট্রিং-এ ডুপ্লিকেট ক্যারেক্টার খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে পূর্ণসংখ্যা অ্যারে থেকে স্বতন্ত্র (distinct) উপাদান প্রিন্ট করার প্রোগ্রাম