[LeetCode] 215. Kth Largest Element in an Array

lkdcode·2023년 9월 11일

Algorithm

목록 보기
34/47
post-thumbnail

215. Kth Largest Element in an Array


문제 분석

정수 배열과 정수 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();
    }
}

profile
되면 한다

0개의 댓글