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

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


ধরা যাক nums নামক একটি সংখ্যার তালিকা আছে, এবং আমাদের nums-এ এমন সবচেয়ে দীর্ঘ সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যাতে প্রতিটি последователни সংখ্যার মধ্যে সমতা সম্পর্ক কম-থেকে (less-than) এবং বেশি-থেকে (greater-than) অপারেশনের মধ্যে বদলাফালা হয়। প্রথম দুটি সংখ্যার অসমতা বা কম-থেকে বা বেশি-থেকে হতে পারে।

উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [1, 2, 6, 4, 5], তবে আউটপুট হবে 4, কারণ সবচেয়ে দীর্ঘ বদলাফালা অসমতা সাবলিস্ট হল [2, 6, 4, 5] যেহেতু 2 < 6 > 4 < 5।

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

  • get_direction() ফাংশন সংজ্ঞায়িত করুন। এটি a, b নিবে।

    • a এবং b সমান হলে 0 ফেরত দিন, অন্যথায় a < b হলে -1, অন্যথায় 1 ফেরত দিন।
  • যদি nums-এর আকার 2-এর চেয়ে ছোট হয়, তবে nums-এর আকার ফেরত দিন।

  • max_length := 1, cur_length := 1, last_direction := 0 সেট করুন।

  • i = 0 থেকে nums-এর আকার - 1 পর্যন্ত লুপ চালান:

    • direction := get_direction(nums[i], nums[i + 1])
    • যদি direction 0 হয়, তবে cur_length := 1
    • অন্যথায় যদি direction last_direction-এর সমান হয়, তবে cur_length := 2
    • অন্যথায়, cur_length := cur_length + 1
    • max_length := max(max_length, cur_length)
    • last_direction := direction
  • max_length ফেরত দিন।

উদাহরণ কোড

class Solution:
    def solve(self, nums):
        if len(nums) < 2:
            return len(nums)
        def get_direction(a, b):
            return 0 if a == b else -1 if a < b else 1
        max_length = 1
        cur_length = 1
        last_direction = 0
        for i in range(len(nums) - 1):
            direction = get_direction(nums[i], nums[i + 1])
            if direction == 0:
                cur_length = 1
            elif direction == last_direction:
                cur_length = 2
            else:
                cur_length += 1
            max_length = max(max_length, cur_length)
            last_direction = direction
        return max_length

ob = Solution()
nums = [1, 2, 6, 4, 5]
print(ob.solve(nums))

ইনপুট

[1, 2, 6, 4, 5]

আউটপুট

4
  1. পাইথনে বাইনারি ট্রির সর্বোচ্চ অল্টারনেটিং পথের দৈর্ঘ্য বের করার প্রোগ্রাম

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

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

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