ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যাকে বলা হয় সংখ্যা। আমাদের দীর্ঘতম সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যেমন (সর্বনিম্ন দৈর্ঘ্য 3) এর মানগুলি কঠোরভাবে বৃদ্ধি পাচ্ছে এবং তারপরে কমছে৷
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[7, 1, 3, 5, 2, 0], তাহলে আউটপুট হবে 5, যেমন সাবলিস্ট [2, 4, 6, 3, 1] কঠোরভাবে বাড়ছে তারপর হ্রাস পাচ্ছে .
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=0, n :=a এর আকার, res :=-ইনফিনিটি
- যখন i
- st :=i
- linc :=0, ldec :=0
- যখন i
- linc :=linc + 1
- i :=i + 1
- ldec :=ldec + 1
- i :=i + 1
- res :=res এর সর্বোচ্চ এবং (i - st + 1)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, a): i, n, res = 0, len(a), float("-inf") while i < n - 2: st = i linc, ldec = 0, 0 while i < n - 1 and a[i] < a[i + 1]: linc += 1 i += 1 while i < n - 1 and a[i] > a[i + 1]: ldec += 1 i += 1 if linc > 0 and ldec > 0: res = max(res, i - st + 1) while i < n - 1 and a[i] == a[i + 1]: i += 1 return res if res >= 0 else 0 ob = Solution() nums = [8, 2, 4, 6, 3, 1] print(ob.solve(nums))
ইনপুট
[[8, 2, 4, 6, 3, 1]
আউটপুট
5