ধরুন আমাদের একটি অ্যারের সংখ্যা আছে, আমাদের এটিকে বাম এবং ডান নামে দুটি ভিন্ন সাব্যারেতে ভাগ করতে হবে যাতে −
-
বাম সাবয়ারের প্রতিটি উপাদান ডান সাবয়ারের প্রতিটি উপাদানের থেকে কম বা সমান।
-
বাম এবং ডান সাব্যারে অ-খালি।
-
বাম সাবয়ারের সম্ভাব্য আকার সবচেয়ে ছোট।
এই ধরনের পার্টিশন করার পরে আমাদের বাম দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি 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