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

পাইথনে একটি উপাদান সরিয়ে কনটিগুয়াস স্ট্রিক্টলি ইনক্রিজিং সাবলিস্টের সর্বোচ্চ দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম


মনে করুন nums একটি সংখ্যার তালিকা। একটি বা শূন্য উপাদান সরিয়ে কনটিগুয়াস স্ট্রিক্টলি ইনক্রিজিং সাবলিস্টের সর্বোচ্চ দৈর্ঘ্য খুঁজে বের করতে হবে।

উদাহরণস্বরূপ, nums = [30, 11, 12, 13, 14, 15, 18, 17, 32] হলে আউটপুট ৭, কারণ ১৮ সরিয়ে [11,12,13,14,15,17,32] পাওয়া যায়।

সমাধানের ধাপসমূহ

  • n := nums-এর আকার
  • pre := n আকারের তালিকা, ১ দিয়ে পূরিত
  • i = 1 থেকে n-1 পর্যন্ত, যদি nums[i] > nums[i-1], pre[i] = pre[i-1]+1
  • suff := n আকারের তালিকা, ১ দিয়ে পূরিত
  • i = n-2 থেকে 0 পর্যন্ত, যদি nums[i] < nums[i+1], suff[i] = suff[i+1]+1
  • ans := max(max(pre), max(suff))
  • i = 1 থেকে n-2 পর্যন্ত, যদি nums[i-1] < nums[i+1], ans = max(ans, pre[i-1]+suff[i+1])
  • ans ফেরত দিন

উদাহরণ

class Solution:
    def solve(self, nums):
        n = len(nums)
        pre = [1] * n
        for i in range(1, n):
            if nums[i] > nums[i - 1]:
                pre[i] = pre[i - 1] + 1
        suff = [1] * n
        for i in range(n - 2, -1, -1):
            if nums[i] < nums[i + 1]:
                suff[i] = suff[i + 1] + 1
        ans = max(max(pre), max(suff))
        for i in range(1, n - 1):
            if nums[i - 1] < nums[i + 1]:
                ans = max(ans, pre[i - 1] + suff[i + 1])
        return ans

ob = Solution()
nums = [30, 11, 12, 13, 14, 15, 18, 17, 32]
print(ob.solve(nums))

ইনপুট

[30, 11, 12, 13, 14, 15, 18, 17, 32]

আউটপুট

7
  1. পাইথনে বদলাফালা অসমতা উপাদান সাবলিস্টের সর্বোচ্চ দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সর্বোচ্চ ক্রমবর্ধমান সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্বতন্ত্র উপাদান সম্বলিত সর্বোচ্চ দীর্ঘ সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে সর্বোচ্চ সমষ্টিয়ুক্ত সন্নিবিষ্ট সাবলিস্টের সমষ্টি খুঁজে বের করার প্রোগ্রাম