Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 정확히 k개의 고유한 요소가 있는 하위 목록의 수를 계산하는 프로그램

<시간/>

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