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

C#-এ ইন্টিজার লিস্ট থেকে ডুপ্লিকেট প্রিন্ট করা (Dictionary)

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

এলগরিদম

  1. খালি ডিকশনারি তৈরি করুন।
  2. লিস্ট লুপ করুন: কি থাকলে ++, নাইলে ১।
  3. ডিকশনারি ইটারেট করে কাউন্ট > ১ প্রিন্ট করুন।

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


using System;
using System.Collections.Generic;

class PrintDuplicatesDemo
{
    public static void Main()
    {
        int[] arr = { 3, 6, 3, 8, 9, 2, 2 };
        
        var freq = new Dictionary<int, int>();
        foreach (var n in arr)
        {
            if (freq.ContainsKey(n)) freq[n]++;
            else freq[n] = 1;
        }
        
        Console.WriteLine("সব এলিমেন্টের ফ্রিকোয়েন্সি:");
        foreach (var kvp in freq)
            Console.WriteLine($"{kvp.Key} occurred {kvp.Value} time{(kvp.Value > 1 ? "s" : "")}");
        
        Console.WriteLine("\nশুধু ডুপ্লিকেট (কাউন্ট > ১):");
        foreach (var kvp in freq.Where(k => k.Value > 1))
            Console.WriteLine($"{kvp.Key} ({kvp.Value} বার)");
    }
}

আউটপুট


সব এলিমেন্টের ফ্রিকোয়েন্সি:
3 occurred 2 times
6 occurred 1 times
8 occurred 1 times
9 occurred 1 times
2 occurred 2 times

শুধু ডুপ্লিকেট (কাউন্ট > ১):
3 (2 বার)
2 (2 বার)

LINQ বিকল্প


var duplicates = arr
    .GroupBy(x => x)
    .Where(g => g.Count() > 1)
    .Select(g => g.Key);

foreach (var d in duplicates) Console.WriteLine(d);

স্পেস-অপ্টিমাইজড: HashSet দুটি ব্যবহার করে


var seen = new HashSet<int>();
var duplicates = new HashSet<int>();

foreach (int n in arr)
{
    if (!seen.Add(n)) // Add false ফেরত দিলে = ইতিমধ্যে আছে
        duplicates.Add(n);
}

foreach (var d in duplicates) Console.WriteLine(d);

এই পদ্ধতিতে কাউন্ট স্টোর হয় না, শুধু ডুপ্লিকেট আছে কিনা জানা যায়।

  1. পাইথনে লিস্ট থেকে নেগেটিভ সংখ্যা প্রিন্ট করা

  2. পাইথন প্রোগ্রাম: ইন্টিজার লিস্ট থেকে ডুপ্লিকেট প্রিন্ট করা

  3. পাইথন প্রোগ্রাম: লিস্ট থেকে অনন্য (Unique) মান প্রিন্ট করা

  4. পাইথনে লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো