ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যার নাম nums এবং আরেকটি মান pos আছে। আমাদের সংখ্যাগুলির একটি সাবলিস্ট A খুঁজে বের করতে হবে যাতে সূচকের অবস্থান অন্তর্ভুক্ত থাকে যাতে (সর্বনিম্ন A) * (A এর আকার) সর্বাধিক করা হয় তারপর মানটি ফেরত দেয়।
সুতরাং, ইনপুট যদি nums =[-2, 2, 5, 4] pos =3 এর মত হয়, তাহলে আউটপুট হবে 8, সেরা সাবলিস্ট হিসাবে [5, 4], কারণ (5, 4) =4 এবং এর আকার হল 2 আমাদের কাছে 4 * 2 =8।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
উত্তর :=A[pos], m :=A[pos]
-
i :=pos, j :=pos
-
0 থেকে A - 1 এর আকারের জন্য নিম্নলিখিতগুলি করুন, করুন
-
উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
class Solution: def solve(self, A, pos): NINF = float("-inf") ans = m = A[pos] i = pos j = pos for _ in range(len(A) - 1): left = A[i - 1] if i - 1 >= 0 else NINF right = A[j + 1] if j + 1 < len(A) else NINF if left >= right: i -= 1 m = min(m, A[i]) else: j += 1 m = min(m, A[j]) ans = max(ans, m * (j - i + 1)) return ans ob = Solution() nums = [-2, 2, 5, 4] pos = 3 print(ob.solve(nums, pos))
ইনপুট
[-2, 2, 5, 4], 3
আউটপুট
8