nums라는 숫자 목록과 다른 값 k가 있다고 가정하면 하위 목록에 정확히 k개의 고유 숫자가 있어야 하는 하위 목록의 수를 찾아야 합니다.
따라서 입력이 nums =[2, 2, 3, 4] k =2와 같으면 [2, 2, 3], [2, 3]과 같은 하위 목록이 있으므로 출력은 3이 됩니다. [3, 4].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- count() 함수를 정의합니다. K
- slot :=빈 지도, 기본적으로 모든 값은 0
- i :=res :=0
- 각 인덱스 j와 값 x num에 대해 do
- 슬롯[x] :=슬롯[x] + 1
- 슬롯의 크기> K, do
- 슬롯[nums[i]] :=슬롯[nums[i]] - 1
- 슬롯[nums[i]]이 0과 같으면
- 슬롯[nums[i]] 제거
- 나는 :=나는 + 1
- res :=res + j - i + 1
- 반환 결과
- 메인 방법에서 다음을 수행하십시오 -
- 반환 개수(k) - 개수(k - 1)
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
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