ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে এবং আরেকটি মান k, আমাদেরকে সাবলিস্টে ঠিক k অনন্য সংখ্যার জন্য প্রয়োজনীয় সাবলিস্টের সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি nums =[2, 2, 3, 4] k =2 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমাদের সাবলিস্ট রয়েছে:[2, 2, 3], [2, 3], [৩, ৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন গণনা () সংজ্ঞায়িত করুন। এতে K লাগবে
- স্লট :=একটি খালি মানচিত্র, ডিফল্টরূপে সমস্ত মান 0
- i :=res :=0
- প্রতিটি সূচক j, এবং মান x সংখ্যার জন্য, করুন
- স্লট[x] :=স্লট[x] + 1
- যখন স্লটের আকার> K, do
- স্লট[সংখ্যা[i]] :=স্লট[সংখ্যা[i]] - 1
- যদি slot[nums[i]] 0 এর মত হয়, তাহলে
- স্লট [সংখ্যা[i]] সরান
- i :=i + 1
- res :=res + j - i + 1
- রিটার্ন রিটার্ন
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- রিটার্ন কাউন্ট(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