ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা আছে এবং আরেকটি সংখ্যা k, আমাদের k আকারের প্রতিটি উইন্ডোতে স্বতন্ত্র সংখ্যার গণনার একটি তালিকা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি nums =[2, 2, 3, 3, 4], k =2 এর মত হয়, তাহলে আউটপুট হবে [1, 2, 1, 2], যেমন উইন্ডোগুলি [2, 2], [২, ৩], [৩, ৩], এবং [৩, ৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
c :=সংখ্যা এবং তাদের ফ্রিকোয়েন্সিগুলিতে উপাদানগুলির একটি অভিধান তৈরি করুন
-
উত্তর :=একটি নতুন তালিকা
-
i রেঞ্জ k থেকে সংখ্যার আকারের জন্য, করুন
-
উত্তরের শেষে c-এর আকার সন্নিবেশ করুন
-
c[সংখ্যা[i]] :=c[সংখ্যা[i]] + 1
-
c[সংখ্যা[i - k]] :=c[সংখ্যা[i - k]] - 1
-
যদি c[সংখ্যা[i - k]] 0 এর সমান হয়, তাহলে
-
সরান c[সংখ্যা[i - k]]
-
-
-
উত্তরের শেষে c-এর আকার সন্নিবেশ করুন
-
উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
from collections import Counter class Solution: def solve(self, nums, k): c = Counter() for i in range(k): c[nums[i]] += 1 ans = [] for i in range(k, len(nums)): ans.append(len(c)) c[nums[i]] += 1 c[nums[i - k]] -= 1 if c[nums[i - k]] == 0: del c[nums[i - k]] ans.append(len(c)) return ans ob = Solution() nums = [2, 2, 3, 3, 4] print(ob.solve(nums, 2))
ইনপুট
[2, 2, 3, 3, 4], 2
আউটপুট
[1, 2, 1, 2]