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

ডুপ্লিকেট অনুমতির সাথে অ্যারেতে ফিক্সড পয়েন্ট খুঁজে বের করা C++-এ

এখানে আমরা দেখব কিভাবে একটি দিয়ে गये অ্যারেতে ফিক্সড পয়েন্ট খুঁজে বের করা যায়। একটি অ্যারেতে একটি উপাদানকে ফিক্সড পয়েন্ট বলা হয় যদি তার মান তার ইনডেক্সের সমান হয়। এই প্রোগ্রামটি ফিক্সড পয়েন্ট পাওয়া গেলে মানটি রিটার্ন করবে, অন্যথায় -১ রিটার্ন করবে। অ্যারেতে ঋণাত্মক সংখ্যাও থাকতে পারে এবং উপাদানগুলো সর্ট করা আছে। এখানে ডুপ্লিকেট উপাদান অনুমতিপ্রাপ্ত।

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

এই সমস্যাটি O(log n) সময়ে সমাধান করতে আমরা বাইনারি সার্চ পদ্ধতি ব্যবহার করব। কিন্তু ডুপ্লিকেট উপাদান থাকার কারণে সাধারণ বাইনারি সার্চ কাজ নাও করতে পারে। বাম দিক যাচাই করতে হবে min(mid – 1, midValue) থেকে এবং ডান দিক যাচাই করতে হবে max(mid + 1, midValue) থেকে।

উদাহরণ কোড

#include <iostream>
#include <algorithm>
using namespace std;

int getFixedPoint(int arr[], int left, int right) {
    if (right < left)
        return -1;
    int mid = (left + right) / 2;
    int midValue = arr[mid];

    if (mid == arr[mid])
        return mid;

    int leftindex = min(mid - 1, midValue);
    int l = getFixedPoint(arr, left, leftindex);
    if (l >= 0)
        return l;

    int rightindex = max(mid + 1, midValue);
    int r = getFixedPoint(arr, rightindex, right);
    return r;
}

int main() {
    int arr[] = {-10, -5, 2, 2, 2, 3, 4, 7, 10, 12, 17};
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << "Fixed Point: " << getFixedPoint(arr, 0, n-1);
    return 0;
}

আউটপুট

Fixed Point: 2
  1. সি++ প্রোগ্রাম: অ্যারেতে সর্বনিম্ন মানের ফ্রিকোয়েন্সি (Frequency) নির্ণয়

  2. C++ ব্যবহার করে স্ট্রাকচার অ্যারেতে সর্বোচ্চ মান বের করা

  3. দেওয়া অ্যারেতে ফিক্সড পয়েন্ট (মান ইনডেক্সের সমান) খুঁজে বের করা C++-এ

  4. C++-এ অ্যারেতে সর্বোচ্চ GCD वाली পেয়ার বের করা