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和值x nums,执行:
- slot[x] := slot[x] + 1
- 当slot的大小 > K时,执行:
- slot[nums[i]] := slot[nums[i]] - 1
- 如果slot[nums[i]]等于0,则
- 删除slot[nums[i]]
- i := i + 1
- res := res + j - i + 1
- 返回res
- 在主方法中执行以下操作:
- 返回count(k) - count(k - 1)
示例 (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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP