정수만 저장되는 num이라는 배열이 있다고 가정합니다. 숫자 k가 있는 경우. 정확히 k개의 요소를 제거한 후 최소한의 고유한 요소를 찾아야 합니다.
따라서 입력이 nums =[5,4,2,2,4,4,3], k =3과 같으면 출력은 2가 됩니다. 왜냐하면 5와 3, 그리고 2 중 하나를 제거하면 또는 4 중 하나를 선택하면 2와 4만 남게 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
사전:=새 지도
-
숫자의 각 숫자에 대해 수행
-
num이 사전에 없으면
-
사전[숫자]:=1
-
-
그렇지 않으면
-
사전[숫자] :=사전[숫자] + 1
-
-
-
count:=사전의 크기
-
사전의 모든 값의 정렬된 순서로 각 빈도에 대해 수행
-
k :=k - 주파수
-
k <0이면
-
반환 횟수
-
-
그렇지 않으면
-
개수 :=개수 - 1
-
-
-
반환 횟수
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
def solve(nums, k): dictionary={} for num in nums: if num not in dictionary: dictionary[num]=1 else: dictionary[num]+=1 count=len(dictionary) for frequency in sorted(dictionary.values()): k-=frequency if(k<0): return count else: count-=1 return count nums = [5,4,2,2,4,4,3] k = 3 print(solve(nums, k))
입력
[5,4,2,2,4,4,3], 3
출력
2