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