비어 있지 않은 정수 배열이 있다고 가정합니다. k번째로 가장 빈번한 요소를 반환해야 합니다. 따라서 요소가 [1,1,1,1,2,2,3,3,3]이고 k =2이면 결과는
공식적으로 함수는 -
- i, j, k가 있으면 true를 반환
- arr[i]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- num_freq =빈 지도, freq_list :=빈 지도
- nums
- 의 각 요소 i에 대해
- i가 num_freq에 없으면 num_freq[i] :=1이고, 그렇지 않으면 num_freq[i]를 1만큼 증가
- num_freq 맵의 각 키-값 쌍에 대해
- 값이 freq_list에 없으면 freq_list[value] :=[key]가 있는 목록, 그렇지 않으면 freq_list[value] 배열에 키 삽입
- res :=빈 목록
- for i :=0까지의 숫자 길이
- 내가 freq_list에 있으면 freq_list[i]의 요소를 res에 추가합니다.
- res의 길이>=k이면 중단
- 반환 결과
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution(object):
def topKFrequent(self, nums, k):
number_frequency = {}
frequency_list ={}
for i in nums:
if i not in number_frequency:
number_frequency[i] = 1
else:
number_frequency[i] += 1
for key,value in number_frequency.items():
if value not in frequency_list:
frequency_list[value] = [key]
else:
frequency_list[value].append(key)
result = []
for i in range(len(nums),0,-1):
if i in frequency_list:
result.extend(frequency_list[i])
if len(result) >=k:
break
return result
ob1 = Solution()
print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2)) 입력
[1,1,1,1,2,2,3,3,3] 2
출력
[1, 3]