비어 있지 않은 정수 배열이 있다고 가정합니다. 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]