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

C++-এ Max Chunks To Make Sorted

এই সমস্যায় আমরা একটি অ্যারে দেওয়া থাকলে, সেটিকে কতটুকু "চাঙ্ক" বা পার্টিশনে ভাগ করা যাবে যাতে প্রতিটি পার্টিশন আলাদাভাবে সর্ট করলে পুরো অ্যারেটি সর্টেড হয়ে যায়। অ্যারেটি হলো [0, 1, ..., n-1]-এর একটি পারমুটেশন।

উদাহরণস্বরূপ, অ্যারে [1,0,2,3,4] এর জন্য আউটপুট হবে 4, কারণ আমরা এটিকে [1,0], [2], [3], [4] - এই ৪টি চাঙ্কে ভাগ করতে পারি।

সমাধানের পদ্ধতি

  • ans = 0, maxVal = INT_MIN ইনিশিয়ালাইজ করুন।
  • অ্যারে ট্রাভার্স করুন।
  • প্রতিটি ইন্ডেক্স i-এ maxVal = max(maxVal, arr[i]) আপডেট করুন।
  • যদি maxVal == i হয়, তবে ans++ করুন (কারণ ০ থেকে i পর্যন্ত সব এলিমেন্ট এই চাঙ্কে আছে)।
  • ans রিটার্ন করুন।

উদাহরণ (C++)

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

class Solution {
public:
    int maxChunksToSorted(vector<int>& arr) {
        int ans = 0;
        int maxVal = INT_MIN;
        int n = arr.size();
        for (int i = 0; i < n; i++) {
            maxVal = max(arr[i], maxVal);
            if (maxVal == i) {
                ans++;
            }
        }
        return ans;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1, 0, 2, 3, 4};
    cout << ob.maxChunksToSorted(v);
    return 0;
}

ইনপুট

[1,0,2,3,4]

আউটপুট

4
  1. C++-এ একটি রেখায় সর্বোচ্চ পয়েন্ট (Max Points on a Line)

  2. C++-এ ইনলাইন ফাংশন (Inline Functions in C++)

  3. C++ প্রোগ্রাম: Max Heap ইমপ্লিমেন্টেশন

  4. Python-এ অ্যারে সাজানোর জন্য সর্বোচ্চ চাংক বের করার প্রোগ্রাম