কম্পিউটার

C++ ব্যবহার করে ন্যূনতম এবং সর্বোচ্চ সমান হওয়া সাবাররেগুলির সংখ্যা খুঁজুন


এই নিবন্ধে, আমরা C++ ব্যবহার করে সর্বাধিক এবং সর্বনিম্ন উপাদান একই রকমের সাবয়ারের সংখ্যা খুঁজে বের করার সমস্যার সমাধান করব। এখানে সমস্যার উদাহরণ −

Input : array = { 2, 3, 6, 6, 2, 4, 4, 4 }
Output : 12
Explanation : {2}, {3}, {6}, {6}, {2}, {4}, {4}, {4}, {6,6}, {4,4}, {4,4} and { 4,4,4 } are the subarrays which can be formed with maximum and minimum element same.

Input : array = { 3,3,1,5,1,2,2 }
Output : 9
Explanation : {3}, {3}, {1}, {5}, {1}, {2}, {2}, {3,3} and {2,2} are the subarrays which can be formed with minimum and maximum are the same.

সমাধান খোঁজার পদ্ধতি

উদাহরণের দিকে তাকিয়ে, আমরা বলতে পারি যে ন্যূনতম সংখ্যক সাব্যারে তৈরি করা যেতে পারে অ্যারের আকারের সমান ন্যূনতম এবং সর্বোচ্চ উপাদানগুলি দিয়ে। একই ধারাবাহিক সংখ্যা থাকলে সাবয়ারের সংখ্যা আরও বেশি হতে পারে।

তাই আমরা প্রতিটি উপাদানের মধ্য দিয়ে যাওয়ার একটি পদ্ধতি প্রয়োগ করতে পারি এবং এর ধারাবাহিক সংখ্যাগুলি একই কিনা তা পরীক্ষা করতে পারি এবং পরপর সংখ্যাগুলি একই হলে সংখ্যা বৃদ্ধি করতে পারি এবং যদি একটি ভিন্ন সংখ্যা পাওয়া যায় তবে ভিতরের লুপটি ভেঙে দিতে পারি।

অভ্যন্তরীণ লুপ শেষ হলে বা বিরতি হলে ফলাফল পরিবর্তনশীল ফলাফল পরিবর্তনশীলকে বৃদ্ধি করে এবং অবশেষে ফলাফল পরিবর্তনশীল থেকে ফলাফল দেখায়।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int main(){
    int a[ ] = { 2, 4, 5, 3, 3, 3 };
    int n = sizeof(a) / sizeof(a[0]);
        int result = n, count =0;
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            if(a[i]==a[j])
                count++;
            else
                break;
        }
        result+=count;
        count =0;
    }
    cout << "Number of subarrays having minimum and maximum elements same:" << result;
    return 0;
}

আউটপুট

Number of subarrays having minimum and maximum elements same: 9
Time complexity = O(n2).

উপরের কোডের ব্যাখ্যা

এই কোডে, আমরা অ্যারের আকার সংরক্ষণ করতে n ভেরিয়েবল নিচ্ছি, ফলাফল =n, কারণ ন্যূনতম n সাবয়ারে তৈরি করা যেতে পারে এবং একই সংখ্যার গণনা রাখতে গণনা করা যেতে পারে।

বাইরের লুপটি অ্যারের প্রতিটি উপাদান প্রক্রিয়া করতে ব্যবহৃত হয়। ইনডেক্স এলিমেন্টের পর পরপর কয়টি সংখ্যা সমান তা খুঁজে বের করতে এবং অভ্যন্তরীণ লুপ শেষ হলে প্রতিবার কাউন্ট ভেরিয়েবলের সাথে ফলাফল পরিবর্তনশীলকে বৃদ্ধি করতে ইনার লুপ ব্যবহার করা হয়। অবশেষে ফলাফল ভেরিয়েবলে সংরক্ষিত আউটপুট দেখাচ্ছে।

দক্ষ পদ্ধতি

এই পদ্ধতিতে, আমরা প্রতিটি উপাদানের মধ্য দিয়ে যাচ্ছি, এবং প্রতিটি উপাদানের জন্য, আমরা অনুসন্ধান করছি কতগুলো ধারাবাহিক একই সংখ্যা রয়েছে। পাওয়া প্রতিটি একই সংখ্যার জন্য, আমরা গণনা পরিবর্তনশীলকে বৃদ্ধি করছি, এবং যখন বিভিন্ন সংখ্যা পাওয়া যায় তখন গণনার সাহায্যে, আমরা "n =n*(n+1) সূত্রটি ব্যবহার করে কতগুলি উপ-অ্যারে তৈরি করা যায় তা খুঁজে বের করছি। /2" এবং এই সূত্রের উত্তর দিয়ে ফলাফলের পরিবর্তনশীলকে বৃদ্ধি করা।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int main(){
    int a[] = { 2, 4, 5, 3, 3, 3 };
    int n = sizeof(a) / sizeof(a[0]);
        int result = 0;
    int count =1,temp=a[0];
    for (int i = 1; i < n; i++) {
        if (temp==a[i]){
            count++;
        }
        else{
            temp=a[i];
            result = result + (count*(count+1)/2);
            count=1;
        }
    }
    result = result + (count*(count+1)/2);
    cout <<  "Number of subarrays having minimum and maximum elements same:" << result;
    return 0;
}

আউটপুট

Number of subarrays having minimum and maximum elements same: 9
Time complexity : O(n)

উপরের কোডের ব্যাখ্যা

এই কোডে, আমরা টেম্প ভেরিয়েবলে অ্যারের 0 তম সূচক সংরক্ষণ করি এবং সূচক 1 দিয়ে লুপটি শুরু করি। আমরা পরীক্ষা করি যে টেম্প ভেরিয়েবলটি বর্তমান সূচকের উপাদানের সমান এবং একই সংখ্যার জন্য 1 দ্বারা সংখ্যা বৃদ্ধি করে। যদি টেম্প ভেরিয়েবলটি ইনডেক্স এলিমেন্টের সমান না হয়, তবে আমরা একই সংখ্যার গণনা থেকে তৈরি করা এবং ফলাফল ভেরিয়েবলে ফলাফল সংরক্ষণ করা সাবয়ারের সমন্বয় খুঁজে পাই। আমরা টেম্প ভ্যালু পরিবর্তন করে বর্তমান ইনডেক্স রিসেটিং কাউন্ট 1 এ করি। অবশেষে, আমরা ফলাফল ভেরিয়েবলে সংরক্ষিত উত্তর দেখাচ্ছি।

উপসংহার

এই নিবন্ধে, আমরা এমন একটি সমস্যার সমাধান করি যার ন্যূনতম এবং সর্বাধিক উপাদান একই। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি ( স্বাভাবিক এবং দক্ষ) শিখেছি যার মাধ্যমে আমরা এই সমস্যার সমাধান করেছি। আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আশা করি আপনি এই নিবন্ধটি সহায়ক বলে মনে করেন৷


  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে অনন্য ট্রিপলেটের সংখ্যা খুঁজুন যাদের XOR শূন্য

  3. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে ফুটবলে পেন্টাগন এবং হেক্সাগনের সংখ্যা খুঁজুন