ধরুন আমরা একটি অ্যারে অ্যারে দিয়েছি যা [0, 1, ..., arr.length - 1]-এর পারমুটেশন, আমাদের অ্যারেটিকে কিছু সংখ্যক "খণ্ডে বিভক্ত করতে হবে " অথবা পার্টিশন, এবং পৃথকভাবে প্রতিটি পার্টিশন সাজান। সুতরাং তাদের একত্রিত করার পরে, ফলাফলটি সাজানো অ্যারে হবে। সুতরাং যদি অ্যারেটি [1,0,2,3,4] এর মত হয়, তাহলে আউটপুট হবে 4, যেহেতু আমরা [1, 0] এবং [2,3,4] এর মতো দুটি পার্টিশনে বিভক্ত হতে পারি, তবে এটি করতে পারে এছাড়াও সত্য যে [1, 0], [2], [3], [4]। সুতরাং এটি সম্ভব সর্বোচ্চ সংখ্যা, তাই আউটপুট হল 4।
আমরা কত সংখ্যক খণ্ড তৈরি করতে পারতাম?
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উত্তর :=0, minVal :=inf, n :=arr এর আকার, এবং maxVal :=-inf
- আমি 0 থেকে n
- পরিসরে
- maxVal :=arr[i] এবং maxVal এর সর্বোচ্চ
- যদি maxVal =i, তাহলে উত্তর 1 দ্বারা বাড়ান
- উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#includeনামস্পেস ব্যবহার করে int minVal =INT_MAX; int n =arr.size(); int maxVal =INT_MIN; for(int i =0; i v ={1,0,2,3,4}; cout <<(ob.maxChunksToSorted(v));}
ইনপুট
<প্রে>[1,0,2,3,4]আউটপুট
4