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

অ্যারেতে দুটি সংখ্যার মধ্যকার ন্যূনতম দূরত্ব বের করা C++-তে


মনে করুন আমাদের একটি অনসর্টেড অ্যারে A, এবং দুটি সংখ্যা x এবং y আছে। আমাদের A-তে x এবং y-এর মধ্যকার ন্যূনতম দূরত্ব বের করতে হবে। অ্যারেতে ডুপ্লিকেট উপাদানও থাকতে পারে। তাই যদি অ্যারেটি হয় A = [2, 5, 3, 5, 4, 4, 2, 3], x = 3 এবং y = 2, তবে 3 এবং 2-এর মধ্যকার ন্যূনতম দূরত্ব হবে শুধু 1।

এটি সমাধানের জন্য, নিচের ধাপগুলো অনুসরণ করতে হবে,

  • অ্যারেটি বাম থেকে ডানে ট্রাভার্স করুন এবং থামুন যদি x বা y পাওয়া যায়। সেই পজিশনের ইনডেক্স prev-এ সংরক্ষণ করুন
  • <লি>এখন prev ইনডেক্সের পর থেকে অ্যারে ট্রাভার্স করুন, যদি বর্তমান ইনডেক্স i-এ উপাদান x বা y-এর সাথে মিলে যায়, তবে চেক করুন যে এটি A[prev]-से ভিন্ন কিনা, যদি ভিন্ন হয়, তবে ন্যূনতম ইনডেক্স আপডেট করুন যদি প্রয়োজন হয়, যদি সেগুলো ভিন্ন হয়, তবে prev := i হিসেবে আপডেট করুন

উদাহরণ

#include <iostream>
using namespace std;

int findMinDistance(int A[], int n, int x, int y) {
    int i = 0;
    int distance = INT_MAX;
    int prev_index;
    for (i = 0; i < n; i++) {
        if (A[i] == x || A[i] == y) {
            prev_index = i;
            break;
        }
    }
    while (i < n) {
        if (A[i] == x || A[i] == y) {
            if (A[prev_index] != A[i] && (i - prev_index) < distance) {
                distance = i - prev_index;
                prev_index = i;
            } else
                prev_index = i;
        }
        i++;
    }
    return distance;
}

int main() {
    int arr[] = {2, 5, 3, 5, 4, 4, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 3;
    int y = 2;
    cout << "Minimum distance between " << x << " and " << y << " is: " << findMinDistance(arr, n, x, y);
}

আউটপুট

Minimum distance between 3 and 2 is: 1

  1. C++-এ ভালো নোডগুলোর মধ্যে সবচেয়ে ছোট দূরত্ব খুঁজে বের করা

  2. C++-এ বাইনারি ট্রি-এ দুটি নোডের দূরত্ব O(log n) মেথড

  3. বাইনারি ট্রির দুটি নোডের মধ্যকার দূরত্ব বের করা C++-তে

  4. পাইথনে দুটি সংখ্যার শিফটেড টেবিলের মধ্যবর্তী ন্যূনতম পার্থক্য