면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
정수 비어 배열 주어 복귀 K에게 가장 빈번한 요소.
예 1 :
입력 : nums의 = [1,1,1,2,2,3], K = 2 출력 : [1,2]
예 2 :
입력 : nums = [1], K = 1 개 출력 : [1]
노트 :
- 당신은 가정 할 수 k는 항상 유효 1 개 ≤ k 개의 독특한 요소 ≤ 번호.
- 알고리즘의 시간 복잡도가 있어야합니다 (O보다 N 로그 N을 ), 여기서 n은 배열의 크기입니다.
class Solution {
public ArrayList<Integer> topKFrequent(int[] nums, int k) {
ArrayList<Integer> array = new ArrayList<Integer>();
if(nums.length == 0) return array;
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int num: nums){
map.put(num, map.getOrDefault(num, 0) + 1);
}
PriorityQueue<Integer> heap = new PriorityQueue<Integer>((n1, n2) -> map.get(n2) - map.get(n1));
for(int num: map.keySet()){
heap.add(num);
}
while(k-- > 0){
array.add(heap.poll());
}
return array;
}
}
지도 값을 사용하여 우선 순위 큐가 분류 한 다음 돈을 K 요소를 얻을 수있다.