কম্পিউটার

O(1) অতিরিক্ত স্থান এবং C++ এ O(n) সময় অ্যারের সমস্ত উপাদানের ফ্রিকোয়েন্সি গণনা করুন


আমরা মান 1 থেকে n পর্যন্ত উপাদানের একটি বিন্যাস সঙ্গে দেওয়া হয়. কিছু উপাদান পুনরাবৃত্তি হয়, এবং কিছু অনুপস্থিত. লক্ষ্য হল O(n) সময় এবং O(1) অতিরিক্ত স্থানের সমস্ত উপাদানের ফ্রিকোয়েন্সি খুঁজে বের করা।

ইনপুট

Arr[]= { 1,2,2,3,4,4,4,5 }

আউটপুট

1→ 1, 2 → 2, 3→ 1, 4→ 3, 5→ 5

ব্যাখ্যা − সর্বোচ্চ উপাদান হল 5, আউটপুট অ্যারেতে প্রতিটি উপাদান কতবার উপস্থিত হয় তা দেখায়৷

ইনপুট

Arr[]= { 1,4,4,5,5,5,5 }

আউটপুট

1→ 1, 2 →0, 3→ 0, 4→ 2, 5→ 4

ব্যাখ্যা − সর্বোচ্চ উপাদান হল 5, আউটপুট অ্যারেতে প্রতিটি উপাদান কতবার উপস্থিত হয় তা দেখায়৷

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • নীচের প্রোগ্রামটি 1 থেকে 10 এর মধ্যে সংখ্যা সহ অ্যারের জন্য কাজ করে৷

  • ফাংশন প্রিন্ট ফ্রিকোয়েন্সি (int arr[],int n) একটি অ্যারে এবং এর আকার n ইনপুট হিসাবে নেয় এবং অ্যারেতে উপস্থিত 1 থেকে 10 এর মধ্যে সংখ্যার গণনা প্রদান করে।

  • আমরা arr[i]=arr[i]-1 তৈরি করি যাতে প্রতিটি সূচক i সংখ্যার ফ্রিকোয়েন্সি, 1 সংরক্ষিত সূচক 0 এবং আরও অনেক কিছু সংরক্ষণ করে।

  • প্রতিটি ফ্রিকোয়েন্সি arr[arr[i]%10] এ লুপের জন্য ব্যবহার করে মূল মানের সাথে 10 যোগ করুন।

  • x গুণের জন্য 10 যোগ করা হবে যদি সংখ্যা i অ্যারেতে x বার হয়।

  • এখন লুপ প্রিন্ট ফ্রিকোয়েন্সি ব্যবহার করে arr[i]/10 সূচী i এ সমস্ত উপাদান i+1 এর জন্য।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
void printfrequency(int arr[],int n){
   int i=0;
   //1 becomes 0, 2 becomes 1 .....10 becomes 9 so arr[i] will have count of i
   for ( i =0; i<n; i++)
      arr[i] = arr[i]-1;
   //as numbers are between 1-10 add 10 to all (num%10 is num itself)
   for (i=0; i<n; i++)
      arr[arr[i]%10] = arr[arr[i]%10] + 10;
   for (i =0; i<10; i++)
      cout << i + 1 << " -> " << arr[i]/10 << endl;
}
int main(){
   int arr[] = {2, 3, 3, 2, 5, 6, 7, 7, 7, 8, 8, 9, 9};
   int n = sizeof(arr)/sizeof(arr[0]);
   printfrequency(arr,n);
   return 0;
}

আউটপুট

1 -> 0
2 -> 2
3 -> 2
4 -> 0
5 -> 1
6 -> 1
7 -> 3
8 -> 2
9 -> 5
10 -> 0

  1. O(1) সময়ে একটি স্ট্যাকে সর্বাধিক এবং C++ এ O(1) অতিরিক্ত স্থান খুঁজুন

  2. O(n) সময় এবং O(1) অতিরিক্ত স্থানে সদৃশ খুঁজুন - C++ এ 1 সেট করুন

  3. C++ এ প্রাইম ফ্রিকোয়েন্সি সহ অ্যারে উপাদান?

  4. পাইথনে অ্যারের সমস্ত উপাদানের ফ্রিকোয়েন্সি গণনা করুন