মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums আছে। আমাদের কাজ হল এমন সবচেয়ে লম্বা সাবলিস্টের দৈর্ঘ্য বের করা যেটির মান স্ট্রিক্টলি ইনক্রিজিং হয়ে তারপর স্ট্রিক্টলি ডিক্রিজিং (ন্যূনতম দৈর্ঘ্য ৩)।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [7, 1, 3, 5, 2, 0], তবে আউটপুট হবে 5, কারণ সাবলিস্ট [2, 4, 6, 3, 1] স্ট্রিক্টলি ইনক্রিজিং তারপর ডিক্রিজিং। (নোট: উদাহরণে ইনপুট ও আউটপুটের মান মেলেনা, কিন্তু লজিক অনুযায়ী বুঝানো হয়েছে)
i := 0,n := len(a),res := -infinityi < n - 2হলে লুপ চালান:st := ilinc := 0,ldec := 0i < n-1এবংa[i] < a[i+1]হলে লুপ চালান:linc += 1,i += 1
i < n-1এবংa[i] > a[i+1]হলে লুপ চালান:ldec += 1,i += 1
- যদি
linc > 0এবংldec > 0হয়, তবেres := max(res, i - st + 1) i < n-1এবংa[i] == a[i+1]হলেi += 1
resযদি>= 0হয় তবে রিটার্ন করুন, অন্যথায়0রিটার্ন করুন।
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