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

পাইথনে 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] → ৬টি 6 কন্টিগুয়াস।

এলগরিদম (স্লাইডিং উইন্ডো + ফ্রিকোয়েন্সি ম্যাপ)

  1. যদি nums খালি হয়: 0 রিটার্ন করুন।
  2. num_count := defaultdict(int), max_count := 0, start := 0
  3. for end, num in enumerate(nums):
    • num_count[num]++, max_count = max(max_count, num_count[num])
    • যদি end - start + 1 > max_count + k:
      • num_count[nums[start]]--, start++
  4. end - start + 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))  # আউটপুট: 6

ইনপুট / আউটপুট

[8, 6, 6, 4, 3, 6, 6], 2
6
  1. পাইথনে DAG-এ নোড পুনরাবৃত্তি ছাড়া সর্বোচ্চ দৈর্ঘ্যের পাথ খুঁজে বের করার প্রোগ্রাম

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

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

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