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

C++-এ সোর্টেড অ্যারেতে ফ্রিকোয়েন্সি গণনা: লোয়ার/আপার বাউন্ড

একটি সোর্টেড পূর্ণসংখ্যা অ্যারে এবং একটি মান num দেওয়া আছে। num-টি কতবার আসেছে তা দ্রুত বের করুন।

দুইটি পদ্ধতি

১. নেইভ পদ্ধতি (O(n))

লিনিয়ার স্ক্যান করে কাউন্ট করুন।

২. দক্ষ পদ্ধতি (O(log n)) - বাইনারি সার্চ

  • lower_bound: প্রথম অবস্থান যেখানে num আছে বা থাকতে পারে।
  • upper_bound: শেষ অবস্থানের পরের অবস্থান যেখানে num আছে।
  • ফ্রিকোয়েন্সি = upper_bound - lower_bound।

উদাহরণ

ইনপুট: [1,1,1,2,3,4], num=1

আউটপুট: 3

C++ বাস্তবায়ন (দক্ষ)

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

int frequency_count(int arr[], int num, int size) {
    int* first = lower_bound(arr, arr + size, num);
    if (first == arr + size || *first != num)
        return 0;
    int* last = upper_bound(first, arr + size, num);
    return last - first;
}

int main() {
    int arr[] = {1, 1, 1, 2, 3, 4};
    int num = 1;
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Frequency: " << frequency_count(arr, num, size);
    return 0;
}

STL ফাংশন রেফারেন্স

  • lower_bound(first, last, val): প্রথম val বা তার চেয়ে বড় এলিমেন্টের ইটেরেটর।
  • upper_bound(first, last, val): প্রথম val চেয়ে বড় এলিমেন্টের ইটেরেটর।
  • দউনোই O(log n) সময় নেয়।
  1. C++ ব্যবহার করে অ্যারেতে একটি সংখ্যার ফ্রিকোয়েন্সি বের করা

  2. C++-এ রোটেটেড সোর্টেড অ্যারেতে রোটেশন কাউন্ট বের করা

  3. C++ তে সর্টেড অ্যারেতে এবসোলিউট ডিস্টিংক্ট কাউন্ট

  4. C++ প্রোগ্রাম: অ্যারেতে ইনভার্শন কাউন্ট করা