একটি লিস্ট nums এবং একটি ইনডেক্স pos দেওয়া আছে। এমন একটি সাবলিস্ট A খুঁজে বের করতে হবে যাতে pos ইনডেক্সটি অন্তর্ভুক্ত থাকে এবং (min(A) * len(A)) মানটি সর্বোচ্চ হয়। সেই মানটি রিটার্ন করুন।
উদাহরণ: nums = [-2, 2, 5, 4], pos = 3 → আউটপুট 8। সেরা সাবলিস্ট [5, 4] (Min=4, Size=2 → 8)।
সমাধানের ধাপসমূহ (Two Pointers / Greedy Expansion)
ans = m = nums[pos], i = j = pos।
len(nums)-1বার লুপ চালান:left = nums[i-1](যদি i>0, অন্যথায় -inf)।right = nums[j+1](যদি jযদি
left >= right:i--,m = min(m, nums[i])।অন্যথায়:
j++,m = min(m, nums[j])।ans = max(ans, m * (j - i + 1))।
ansরিটার্ন করুন।
পাইথন কোড উদাহরণ
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