程序查找数字列表,其中每个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 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]

    以上是 程序查找数字列表,其中每个K大小的窗口在Python中都有唯一的元素 的全部内容, 来源链接: utcz.com/z/316956.html

    回到顶部