ধরা যাক nums নামক একটি সংখ্যার তালিকা এবং একটি সংখ্যা k আছে। প্রতিটি k-আকারের উইন্ডোতে স্বতন্ত্র উপাদান সংখ্যা বের করে একটি তালিকা তৈরি করতে হবে।
উদাহরণ: nums = [2, 2, 3, 3, 4], k = 2 হলে আউটপুট [1, 2, 1, 2], কারণ উইন্ডোগুলো [2,2], [2,3], [3,3], [3,4]।
সমাধানের ধাপসমূহ
- c := nums-এর প্রথম k উপাদানের ফ্রিকোয়েন্সি ম্যাপ (Counter)
- ans := নতুন তালিকা
- i = k থেকে len(nums)-1 পর্যন্ত:
- ans-এ len(c) অ্যাপেন্ড করুন।
- c[nums[i]] += 1, c[nums[i-k]] -= 1
- যদি c[nums[i-k]] == 0 হয়, ডিলিট করুন।
- শেষে len(c) অ্যাপেন্ড করুন এবং ans ফেরত দিন।
উদাহরণ কোড
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]