কম্পিউটার

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 পাওয়া গেলে থামুন। তারপর সেই অবস্থানের সূচীটি পূর্বে
  • সংরক্ষণ করুন
  • এখন পূর্ববর্তী সূচকের পরে অ্যারেটি অতিক্রম করুন, যদি বর্তমান সূচক i-এর উপাদানটি x বা y-এর সাথে মিলে যায়, তবে এটি A[পূর্বের] থেকে আলাদা কিনা তা পরীক্ষা করুন, যদি এটি ভিন্ন হয়, তাহলে প্রয়োজনে মিন ইনডেক্স আপডেট করুন। , যদি তা ভিন্ন হয়, তাহলে পূর্ববর্তী হিসেবে আপডেট করুন :=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(logn) পদ্ধতি

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

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