কম্পিউটার

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


ধরুন আমাদের একটি তালিকা আছে মাত্র দুটি মান 1 এবং −1। আমাদের দীর্ঘতম সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যার যোগফল 0।

সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1, 1, −1, 1, 1, −1, 1, −1, 1, −1], তাহলে আউটপুট হবে 8, কারণ দীর্ঘতম সাবলিস্ট হল [−1] , 1, 1, −1, 1, −1, 1, −1] যার যোগফল 0৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • টেবিল :=একটি নতুন খালি মানচিত্র

  • cs :=0, max_diff :=0

  • আমি 0 থেকে সংখ্যার আকার − 1 এর মধ্যে, কর

    • cs :=cs + nums[i]

    • যদি cs 0 এর মত হয়, তাহলে

      • max_diff :=সর্বাধিক i + 1 এবং max_diff

    • যদি cs টেবিলে থাকে, তাহলে

      • max_diff :=max_diff এর সর্বোচ্চ এবং (i − টেবিল[cs])

    • অন্যথায়,

      • টেবিল[cs] :=i

  • রিটার্ন max_diff

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, nums):
      table = {}
      cs = 0
      max_diff = 0
      for i in range(len(nums)):
         cs += nums[i]
         if cs == 0:
            max_diff = max(i + 1, max_diff)
         if cs in table:
            max_diff = max(max_diff, i − table[cs])
         else:
            table[cs] = i
      return max_diff
ob = Solution()
nums = [1, 1, −1, 1, 1, −1, 1, −1, 1, −1]
print(ob.solve(nums))

ইনপুট

[1, 1, −1, 1, 1, −1, 1, −1, 1, −1]

আউটপুট

8

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

  2. পাইথনে দীর্ঘতম ধারাবাহিক অনুক্রমের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দীর্ঘতম অ্যানাগ্রাম অনুগামীর দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

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