কম্পিউটার

সি-তে অ্যারেতে একটি উপাদানের প্রথম এবং শেষ সূচকের মধ্যে সর্বাধিক পার্থক্য


আমাদের N আকারের পূর্ণসংখ্যার একটি অ্যারে দেওয়া হয়েছে। অ্যারেটি এলোমেলো ক্রমে পূর্ণসংখ্যা নিয়ে গঠিত। কাজটি হল অ্যারের একটি উপাদানের প্রথম এবং শেষ সূচকের মধ্যে সর্বাধিক পার্থক্য খুঁজে বের করা। আমাদের এমন একটি সংখ্যা খুঁজে বের করতে হবে যা অ্যারেতে দুবার প্রদর্শিত হয় এবং এর সূচকগুলির মধ্যে পার্থক্য সর্বাধিক। যদি এই ধরনের আরও জোড়া থাকে তবে আমরা সূচকগুলির মধ্যে সর্বাধিক এই ধরনের পার্থক্য সংরক্ষণ করব।

ইনপুট

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

আউটপুট −অ্যারেতে একটি উপাদানের প্রথম এবং শেষ সূচকের মধ্যে সর্বাধিক পার্থক্য − 5

ব্যাখ্যা − উপাদানের জোড়া এবং তাদের সূচকগুলির মধ্যে পার্থক্য নিম্নরূপ -

(2,2) Arr[0] and Arr[5] 5-0=5 max difference till now is 5
(1,1) Arr[1] and Arr[3] 3-1=2 max difference till now is 5
(3,3) Arr[2] and Arr[4] 4-2=2 max difference till now is 5
(5,5) Arr[6] and Arr[7] 7-6=1 max difference till now is 5

ইনপুট

Arr[] = { 2,2,3,4,8,3,4,4,8,7 }.

আউটপুট −অ্যারেতে একটি উপাদানের প্রথম এবং শেষ সূচকের মধ্যে সর্বাধিক পার্থক্য − 4

ব্যাখ্যা − উপাদানের জোড়া এবং তাদের সূচকগুলির মধ্যে পার্থক্য নিম্নরূপ -

(2,2) Arr[0] and Arr[1] ; 1-0=1; max difference till now is 1
(3,3) Arr[2] and Arr[5] ; 5-2=3; max difference till now is 3
(4,4,4) Arr[3],Arr[6],Arr[7] ; 7-6=1,6-3=3,7-3=4; max difference till now is 4
(8,8) Arr[4] and Arr[8] ; 8-4=4 ; max difference till now is 4

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

  • পূর্ণসংখ্যার একটি অ্যারে ঘোষণা করুন যাতে এলোমেলো ক্রমে বারবার সংখ্যা থাকে।( Arr[] )

  • অ্যারের আকার সংরক্ষণ করার জন্য একটি ভেরিয়েবল তৈরি করুন। (N)

  • ফাংশন maxDifference(int Arr[],int n) একটি অ্যারের মধ্যে একটি উপাদানের প্রথম এবং শেষ সূচকগুলির মধ্যে সর্বাধিক পার্থক্য (maxD) গণনা করতে ব্যবহৃত হয়৷

  • maxDifference() এর ভিতরে আমরা ঘোষণা করেছি maxD এখন পর্যন্ত পাওয়া সর্বাধিক সূচকের পার্থক্য সংরক্ষণ করতে ব্যবহৃত হয়।

  • প্রথম উপাদান থেকে শুরু করে ( সূচক i=0 ) লুপ ব্যবহার করে অ্যারে অতিক্রম করে।

  • লুপ ট্রাভার্সের জন্য নেস্টে থাকা বাকি অ্যারে (j=i+1) শেষ সূচকে না পৌঁছানো পর্যন্ত।

  • যদি আমরা Arr[i]-এর মতো একই উপাদান খুঁজে পাই তাহলে আমরা এর সূচী i,j-এর মধ্যে পার্থক্য গণনা করি এবং যদি এটি maxD-এর আগের মানের থেকে বেশি হয়, আমরা maxD আপডেট করি।

  • লুপের জন্য উভয়ের শেষ পর্যন্ত এটি চালিয়ে যান।

  • maxD তে সংরক্ষিত ফলাফল ফেরত দিন।

উদাহরণ

#include <stdio.h>
int maxDifference(int arr[],int n){
   int maxD=0;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[i]==arr[j] && (j-i)>maxD)
            maxD=j-i;
      }
   }
   return maxD;
}
int main(){
   int Arr[] = {1, 4, 1, 3, 3, 5, 4, 5, 2};
   int N = sizeof(Arr) / sizeof(Arr[0]);
   printf("Maximum difference between first and last indexes of an element in array : %d" ,maxDifference(Arr, N);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Maximum difference between first and last indexes of an element in array : 5

  1. C++ এ সাজানো এবং ঘোরানো অ্যারেতে সর্বাধিক উপাদান

  2. C++ এ std::vector এবং std::array-এর মধ্যে পার্থক্য

  3. ArrayBlockingQueue এবং ArrayDeque এর মধ্যে পার্থক্য

  4. পাইথনে সাজানো অ্যারেতে এলিমেন্টের প্রথম এবং শেষ অবস্থান খুঁজুন