কম্পিউটার

C++ এ O(n) সময়ের কম সময়ে একটি সীমিত পরিসরের অ্যারেতে প্রতিটি উপাদানের ফ্রিকোয়েন্সি খুঁজুন


ধরুন আমাদের পূর্ণসংখ্যার একটি অ্যারে আছে। অ্যারে হল A, এবং আকার হল n। আমাদের কাজ হল O(n) সময়ের চেয়ে কম অ্যারের সমস্ত উপাদানের ফ্রিকোয়েন্সি খুঁজে বের করা। এলিমেন্টের সাইজ অবশ্যই এক মানের থেকে কম হওয়া উচিত M. এখানে আমরা বাইনারি অনুসন্ধান পদ্ধতি ব্যবহার করব এখানে আমরা পুনরাবৃত্তভাবে অ্যারেটিকে দুটি ভাগে ভাগ করব যদি শেষ উপাদানগুলি আলাদা হয়, যদি এর উভয় প্রান্তের উপাদান একই হয়, এর অর্থ অ্যারের সমস্ত উপাদান একই রকম যেমন অ্যারেটি ইতিমধ্যে সাজানো হয়েছে৷

উদাহরণ

#include<iostream>
#include<vector>
using namespace std;
void calculateFreq(int arr[], int left, int right, vector<int>& frequency) {
   if (arr[left] == arr[right])
      frequency[arr[left]] += right - left + 1;
   else {
      int mid = (left + right) / 2;
      calculateFreq(arr, left, mid, frequency);
      calculateFreq(arr, mid + 1, right, frequency);
   }
}
void getAllFrequency(int arr[], int n) {
   vector<int> frequency(arr[n - 1] + 1, 0);
   calculateFreq(arr, 0, n - 1, frequency);
   for (int i = 0; i <= arr[n - 1]; i++)
      if (frequency[i] != 0)
         cout << "Frequency of element " << i << " is " << frequency[i] << endl;
}
int main() {
   int arr[] = { 10, 10, 10, 20, 30, 30, 50, 50, 80, 80, 80, 90, 90, 99 };
   int n = sizeof(arr) / sizeof(arr[0]);
   getAllFrequency(arr, n);
}

আউটপুট

Frequency of element 10 is 3
Frequency of element 20 is 1
Frequency of element 30 is 2
Frequency of element 50 is 2
Frequency of element 80 is 3
Frequency of element 90 is 2
Frequency of element 99 is 1

  1. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।

  2. C++-এ অ্যারের প্রতিটি উপাদানের সারপাসার কাউন্ট খুঁজুন

  3. C++ প্রোগ্রাম 'k' খুঁজে বের করার জন্য যাতে প্রতিটি অ্যারের উপাদানের সাথে এর মডুলাস একই থাকে

  4. C++ প্রোগ্রাম অনন্য জোড়া খুঁজে বের করার জন্য যাতে প্রতিটি উপাদান N এর থেকে কম বা সমান হয়