Python 程式:查詢每個大小為 K 的視窗都包含唯一元素的數字列表
假設我們有一個名為 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 中元素及其頻率。
ans := 新建一個列表。
對於 i 從 k 到 nums 的大小範圍,執行以下操作:
將 c 的大小插入 ans 的末尾。
c[nums[i]] := c[nums[i]] + 1
c[nums[i - k]] := c[nums[i - k]] - 1
如果 c[nums[i - k]] 等於 0,則:
刪除 c[nums[i - k]]。
將 c 的大小插入 ans 的末尾。
返回 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]
廣告