मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक संख्या k है। हमें आकार k की प्रत्येक विंडो में विशिष्ट संख्याओं की गिनती की सूची ढूंढनी है।
उदाहरण के लिए, यदि इनपुट nums = [2, 2, 3, 3, 4], k = 2 है, तो आउटपुट [1, 2, 1, 2] होगा, क्योंकि विंडोज हैं [2,2], [2,3], [3,3], और [3,4]।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (स्लाइडिंग विंडो + हैश मैप):
c := Counter()(पहलेkतत्वों की आवृत्ति)।ans := []।iकोkसेlen(nums)-1तक लूप में चलाएं:ans.append(len(c))।c[nums[i]] += 1।c[nums[i-k]] -= 1।यदि
c[nums[i-k]] == 0, तोdel c[nums[i-k]]।
ans.append(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]