
정수 배열과 정수 k 가 하나 주어졌을 때 k 번째로 큰 요소를 반환하는 문제.
단, 정렬을 이용하지 않고 해결해야 한다.
자바에서 Heap 을 구현한 데이터 구조 중 하나인 우선순위 큐 를 이용하여 접근하였다.
요소들을 저장하고 우선순위에 따라 요소들을 추출할 수 있다.
주어진 배열을 우선순위 큐 에 담은 후 k 만큼 poll() 해 제거해준다.
우선순위 큐에 대한 내부 구조를 좀 더 깊이 이해한다면 시간 복잡도 성능을 더 줄일 수 있을 것 같다.
class Solution {
public int findKthLargest(int[] nums, int k) {
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
for (int i : nums) {
pq.offer(i);
}
for (int i = 0; i < k - 1; i++) {
pq.poll();
}
return pq.poll();
}
}
