কম্পিউটার টিউটোরিয়াল

পাইথনে নির্দিষ্ট ইনডেক্স অন্তর্ভুক্ত করে সাবলিস্টের (Min × Size) সর্বোচ্চ করা

একটি লিস্ট 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)

  1. ans = m = nums[pos], i = j = pos।

  2. 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))।

  3. 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
  1. পাইথন প্রোগ্রাম - K দৈর্ঘ্যের সাবলিস্ট মুছে ন্যূনতম অ্যাম্প্লিচিউড বের করুন

  2. পাইথনে দুটি লিস্টের কারtezিয়ান প্রোডাক্ট বের করার প্রোগ্রাম

  3. পাইথনে স্টোন মার্জ করার ন্যূনতম খরচ খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে গ্রাফে সর্বোচ্চ ক্লিকের ন্যূনতম আকার বের করার প্রোগ্রাম