在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