ধরুন আমাদের একটি অ্যারের সংখ্যা আছে, আমাদের এটিকে বাম এবং ডান নামে দুটি ভিন্ন সাব্যারেতে ভাগ করতে হবে যাতে −
-
বাম সাবয়ারের প্রতিটি উপাদান ডান সাবয়ারের প্রতিটি উপাদানের থেকে কম বা সমান।
-
বাম এবং ডান সাব্যারে অ-খালি।
-
বাম সাবয়ারের সম্ভাব্য আকার সবচেয়ে ছোট।
এই ধরনের পার্টিশন করার পরে আমাদের বাম দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি nums =[5,0,3,8,6] এর মত হয়, তাহলে আউটপুট হবে 3 কারণ বাম অ্যারে হবে [5,0,3] এবং ডান সাবয়ারে হবে [8,6]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
mx :=null, temp :=null, nmx :=null
-
temp2 :=0
-
প্রতিটি i সংখ্যায়, করুন
-
যদি mx null এর মত হয়, তাহলে
-
mx :=i
-
nmx :=i
-
temp :=temp2
-
temp2 :=temp2 + 1
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
যদি i>=mx, তাহলে
-
temp2 :=temp2 + 1
-
যদি i>nmx, তাহলে
-
nmx :=i
-
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
অন্যথায়,
-
temp :=temp2
-
temp2 :=temp2 + 1
-
mx :=nmx
-
পরবর্তী পুনরাবৃত্তির জন্য যান
-
-
-
রিটার্ন টেম্প+1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): mx = None temp = None nmx = None temp2 = 0 for i in nums: if(mx==None): mx = i nmx = i temp = temp2 temp2+=1 continue if(i>=mx): temp2+=1 if(i>nmx): nmx = i continue else: temp = temp2 temp2+=1 mx = nmx continue return temp+1 nums = [5,0,3,8,6] print(solve(nums))
ইনপুট
[5,0,3,8,6]
আউটপুট
3