在Python中计算具有恰好K个唯一元素的子列表数

在Python中计算具有恰好K个唯一元素的子列表数

假设我们有一个名为nums的数字列表和另一个值k,我们必须找到所需的子列表数量,其中子列表中恰好有k个唯一数字。

因此,如果输入是nums = [2, 2, 3, 4],k = 2,则输出将为3,因为我们有子列表,例如:[2、2、3]、[2、3]、[3、4]。

为了解决此问题,我们将按照以下步骤进行−

  • 定义函数count()。这将取K
  • slot: =一个空映射,所有值默认为0
  • i:= res:= 0
  • 对于每个索引j和nums的值x,执行以下操作
    • slot[x]:=slot[x]+1
    • while size of slot > K, do
      • slot[nums[i]] := slot[nums[i]] – 1
      • 如果slot[nums[i]]与0相同,则
      • remove slot[nums[i]]
      • i := i + 1
    • res:= res + j – i + 1
  • return res
  • 从main方法执行以下操作−
  • return count(k) – count(k-1)

更多Python相关文章,请阅读:Python 教程

示例(Python)

让我们看下面的实现,以更好地理解−

from collections import Counter
class Solution:
   def solve(self, nums, k):
      def count(K):
           slot = Counter()
           i = res = 0
           for j, x in enumerate(nums):
               slot[x] += 1
               while len(slot) > K:
                   slot[nums[i]] -= 1
                   if slot[nums[i]] == 0:
                       del slot[nums[i]]
                   i += 1
               res += j - i + 1
           return res
       return count(k) - count(k-1)
ob = Solution()
nums = [2, 2, 3, 4]
k = 2
print(ob.solve(nums, k))

输入

[2, 2, 3, 4],2

输出

3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程