কম্পিউটার

পাইথনে k অপারেশনের মাধ্যমে বারবার সংখ্যা সম্বলিত দীর্ঘতম সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের কাছে nums নামে একটি তালিকা আছে এবং একটি মান k আছে, এখন আসুন একটি অপারেশন বিবেচনা করি যার মাধ্যমে আমরা তালিকার যেকোনো সংখ্যার মান আপডেট করতে পারি। আমাদের সবচেয়ে দীর্ঘতম সাবলিস্টের দৈর্ঘ্য খুঁজে বের করতে হবে যেটিতে সর্বাধিক k ক্রিয়াকলাপ সম্পাদন করার পরে পুনরাবৃত্তি সংখ্যা রয়েছে৷

সুতরাং, ইনপুট যদি nums =[8, 6, 6, 4, 3, 6, 6] k =2 এর মত হয়, তাহলে আউটপুট হবে 6, কারণ আমরা এই অ্যারেটি তৈরি করতে 4 এবং 3 থেকে 6 পরিবর্তন করতে পারি। 8, 6, 6, 6, 6, 6, 6], এবং সমস্ত 6s সহ সাবলিস্টের দৈর্ঘ্য is6৷

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

  • যদি সংখ্যা খালি হয়, তাহলে

    • রিটার্ন 0

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

  • max_count :=0

  • শুরু :=0

  • প্রতিটি সূচকের শেষে এবং মানের সংখ্যার জন্য, করুন

    • num_count[num] :=num_count[num] + 1

    • সর্বাধিক_গণনা :=সর্বাধিক_গণনা এবং সংখ্যা_গণনা [সংখ্যা]

    • যদি শেষ হয় - শুরু + 1> max_count + k, তারপর

      • num_count[সংখ্যা[শুরু]] :=সংখ্যা_গণনা[সংখ্যা[শুরু]] - 1

      • start :=start + 1

  • ফিরতি শেষ - শুরু + 1

উদাহরণ

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

from collections import defaultdict
def solve(nums, k):
   if not nums:
      return 0

   num_count = defaultdict(int)
   max_count = 0
   start = 0

   for end, num in enumerate(nums):
      num_count[num] += 1
      max_count = max(max_count, num_count[num])
      if end - start + 1 > max_count + k:
         num_count[nums[start]] -= 1
         start += 1
   return end - start + 1

nums = [8, 6, 6, 4, 3, 6, 6]
k = 2
print(solve(nums, k))

ইনপুট

[8, 6, 6, 4, 3, 6, 6], 2

আউটপুট

6

  1. পাইথনে বারবার নোড ছাড়াই DAG-তে দীর্ঘতম পথের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

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

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

  4. পাইথনে সংলগ্ন কঠোরভাবে বর্ধিত সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম