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

C++-এ 0 বা 1 পার্থক্যের সাথে সর্বোচ্চ দৈর্ঘ্যের সাবঅ্যারে

আমাদের একটি যেকোনো আকারের অ্যারে দেওয়া আছে এবং কাজ হলো সেই অ্যারেতে এমন একটি সাবঅ্যারে খুঁজে বের করা যেন সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 হয়।

উদাহরণ

ইনপুট: int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6}

আউটপুট: সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 থাকা সর্বোচ্চ দৈর্ঘ্যের সাবঅ্যারে - 2

ব্যাখ্যা: পার্থক্য 0 বা 1 থাকা সংলগ্ন উপাদানগুলির সাবঅ্যারে গুলো হলো {2, 1}, {5, 6}, {3, 4} এবং {7, 6}। অতএব সর্বোচ্চ দৈর্ঘ্য 2।

ইনপুট: int arr[] = { 2, 1, 7, 6, 5}

আউটপুট: সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 থাকা সর্বোচ্চ দৈর্ঘ্যের সাবঅ্যারে - 3

ব্যাখ্যা: পার্থক্য 0 বা 1 থাকা সংলগ্ন উপাদানগুলির সাবঅ্যারে গুলো হলো {2, 1} এবং {7, 6, 5}। অতএব সর্বোচ্চ দৈর্ঘ্য 3।

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

  • পজিটিভ এবং নেগেটিভ উভয় উপাদান ধারণকারী একটি ইন্টিজার অ্যারে ইনপুট নেওয়া।
  • অ্যারের আকার নির্ণয় করে অ্যারেটি এবং আকার ফাংশনে পাস করা।
  • টেম্পোরারি ভেরিয়েবল i = 0 এবং maximum = 0 ইনিশিয়ালাইজ করা।
  • while লুপ i < size পর্যন্ত চালানো।
  • লুপের ভেতরে j = i সেট করা।
  • আরেকটি while লুপ যেটি সংলগ্ন উপাদানগুলির পার্থক্য 0 বা 1 কিনা তা চেক করে।
  • i ইনক্রিমেন্ট করা।
  • temp = i - j + 1 ক্যালকুলেট করা।
  • যদি maximum < temp হয় তবে maximum আপডেট করা।
  • যদি j == i হয় তবে i ইনক্রিমেন্ট করা।
  • maximum রিটার্ন করা।
  • ফলাফল প্রিন্ট করা।

উদাহরণ কোড

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

int maximum_diff(int arr[], int size){
    int i = 0;
    int maximum = 0;
    while (i < size){
        int j = i;
        while (i+1 < size && (abs(arr[i] - arr[i + 1]) == 1 || abs(arr[i] - arr[i + 1]) == 0)){
            i++;
        }
        int temp = i - j + 1;
        if (maximum < temp){
            maximum = temp;
        }
        if(j == i){
            i++;
        }
    }
    return maximum;
}

int main(){
    int arr[] = { 2, 1, 5, 6, 3, 4, 7, 6};
    int size = sizeof(arr) / sizeof(arr[0]);
    cout << "Maximum length subarray with difference between adjacent elements as either 0 or 1 are: " << maximum_diff(arr, size);
    return 0;
}

আউটপুট

Maximum length subarray with difference between adjacent elements as either 0 or 1 are: 2
  1. C++-এ অসুন্দর সংখ্যা (Ugly Numbers) ধারণকারী সাব-অ্যারের সর্বোচ্চ দৈর্ঘ্য

  2. অ্যারেতে যেকোনো দুটি এলিমেন্টের ন্যূনতম পার্থক্য (C++)

  3. ম্যাট্রিক্সের যেকোনো কলামে সর্বোচ্চ পার্থক্যের জোড়া খুঁজে বের করা C++-তে

  4. C++-এ LCM যা গুণফলের সমান হয় এমন সর্বোচ্চ দৈর্ঘ্যের সাবঅ্যারে