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

C++-এ অ্যারেতে 탑 K ফ্রিকোয়েন্ট এলিমেন্ট বের করা

একটি পূর্ণসংখ্যা অ্যারে এবং একটি সংখ্যা K দেওয়া থাকলে, অ্যারেতে সবচেয়ে বেশি বার আসা 탑 K টি এলিমেন্ট বের করতে হবে।

ইনপুট-১

N = 6, K = 2, arr[] = {1,1,1,2,2,3}

আউটপুট

1 2

ইনপুট-২

N = 2, K = 1, arr[] = {1,2}

আউটপুট

1

সমাধানের পদ্ধতি

  • হ্যাশম্যাপ (unordered_map) দিয়ে প্রতিটি এলিমেন্টের ফ্রিকোয়েন্সি গণনা করুন।
  • ম্যাপের এন্ট্রিগুলো ভেক্টরে কপি করুন এবং ফ্রিকোয়েন্সি অনুযায়ী ডেসেন্ডিং সর্ট করুন।
  • প্রথম K টি এলিমেন্ট আউটপুট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

bool compare(pair<int,int> &a, pair<int,int> &b) {
    return a.second > b.second;
}

void topKFrequent(int *arr, int n, int k) {
    unordered_map<int,int> mp;
    for (int i = 0; i < n; i++) mp[arr[i]]++;
    vector<pair<int,int>> v(mp.begin(), mp.end());
    sort(v.begin(), v.end(), compare);
    for (int i = 0; i < k; i++)
        cout << v[i].first << " ";
}

int main() {
    int N = 5, arr[N] = {1,1,3,2,2}, k = 2;
    topKFrequent(arr, N, k);
    return 0;
}

আউটপুট

2 1
  1. C++ প্রোগ্রাম: অ্যারে উপাদানগুলোর গুণফলের প্রথম ডিজিট বের করা

  2. C++ প্রোগ্রাম: অ্যারে পার্টিশনিং মেথড দিয়ে kth সবচেয়ে ছোট এলিমেন্ট বের করা

  3. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম

  4. C#-এ স্ট্রিংয়ে সর্বাধিক ফ্রিকোয়েন্সি वाला ক্যারেক্টার বের করা