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

পাইথনে ঠিক k সংখ্যক ইউনিক এলিমেন্টসহ সাবলিস্টের সংখ্যা গণনা করার প্রোগ্রাম

একটি লিস্ট nums এবং একটি মান k দেওয়া আছে। এমন সাবলিস্ট (কন্টিগুয়াস) কতটি আছে যাতে সেটিতে ঠিক kটি ইউনিক সংখ্যা থাকে, সেটি বের করতে হবে।

উদাহরণস্বরূপ, nums = [2, 2, 3, 4], k = 2 হলে আউটপুট ৩, কারণ সাবলিস্টগুলো: [2,2,3], [2,3], [3,4]।

সমাধানের পদ্ধতি (স্লাইডিং উইন্ডো + atMost(k) - atMost(k-1))

  1. count(K) ফাংশন লিখুন যা আমসিম Kটি ইউনিক এলিমেন্টসহ সাবলিস্টের সংখ্যা রিটার্ন করে।
    • slot = ফ্রিকোয়েন্সি ম্যাপ (Counter)।
    • i = res = 0।
    • j = ০ থেকে n-1 পর্যন্ত লুপ:
      • slot[x] += 1।
      • while len(slot) > K: slot[nums[i]] -= 1; যদি ০ হয় তবে ডিলিট; i += 1।
      • res += j - i + 1।
    • res রিটার্ন করুন।
  2. ফাইনাল আউটপুট: count(k) - count(k-1)।

পাইথন কোড উদাহরণ

from collections import Counter

class Solution:
    def solve(self, nums, k):
        def count(K):
            slot = Counter()
            i = res = 0
            for j, x in enumerate(nums):
                slot[x] += 1
                while len(slot) > K:
                    slot[nums[i]] -= 1
                    if slot[nums[i]] == 0:
                        del slot[nums[i]]
                    i += 1
                res += j - i + 1
            return res
        return count(k) - count(k - 1)

ob = Solution()
nums = [2, 2, 3, 4]
k = 2
print(ob.solve(nums, k))

ইনপুট

[2, 2, 3, 4], 2

আউটপুট

3
  1. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন

  2. পাইথনে দِيয়ে गये এজগুলো অন্তর্ভুক্ত করে অনন্য পথের সংখ্যা গণনার প্রোগ্রাম

  3. পাইথনে ০ থেকে n মান দিয়ে ইউনিক BST-এর সংখ্যা গণনা করার প্রোগ্রাম

  4. পাইথনে লিস্টের মধ্যে ইউনিক সাবলিস্ট গণনা করুন