程序查找数字列表,其中每个K大小的窗口在Python中都有唯一的元素
假设我们有一个称为nums和另一个数字k的数字列表,我们必须在每个大小为k的窗口中找到不同数字的计数列表。
因此,如果输入像nums = [2,2,3,3,4],k = 2,那么输出将是[1,2,1,2,2],因为窗口是[2,2], [2,3],[3,3]和[3,4]。
为了解决这个问题,我们将遵循以下步骤-
c:=创建一个以num为单位的元素及其频率的字典
ans:=一个新列表
对于范围在k到nums大小的i
删除c [nums [i-k]]
在ans的末尾插入c的大小
c [nums [i]]:= c [nums [i]] + 1
c [nums [i-k]]:= c [nums [i-k]]-1
如果c [nums [i-k]]与0相同,则
在ans的末尾插入c的大小
返回ans
让我们看下面的实现以更好地理解-
示例
from collections import Counterclass 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]
以上是 程序查找数字列表,其中每个K大小的窗口在Python中都有唯一的元素 的全部内容, 来源链接: utcz.com/z/316956.html