Daily LeetCode Challenge - 703. Kth Largest Element in a Stream

Min Young Kim·2023년 5월 23일
0

algorithm

목록 보기
153/198

Problem From.

https://leetcode.com/problems/kth-largest-element-in-a-stream/

오늘 문제는 원소들이 주어지고 그 원소들을 넣는 메서드와 k 번째로 큰 원소를 반환하는 메서드를 구현하는 문제였다.

이 문제는 priority queue 를 사용해서 풀 수 있었는데, 먼저 priority queue 를 만들고, 주어진 원소들을 넣은뒤, k 만큼의 크기가 될때까지 원소들을 뺀다.

그리고 새로운 원소를 더할때, 일단 넣고, 크기가 k 가 될때까지 줄이면, 마지막에 남는건 k 번째 큰 수가 되므로, 문제에서 요구하는 함수를 구현할 수 있었다.

class KthLargest(k: Int, nums: IntArray) {

    val find = k
    val queue = PriorityQueue<Int>()
    
    init {
        nums.forEach {
            queue.add(it)
        }
        
        while(queue.size > find) {
            queue.poll()
        }
    }
    
    fun add(`val`: Int): Int {

        queue.add(`val`)
        if(queue.size > find) {
            queue.poll()
        }
        return queue.peek()
    }

}

/**
 * Your KthLargest object will be instantiated and called as such:
 * var obj = KthLargest(k, nums)
 * var param_1 = obj.add(`val`)
 */
profile
길을 찾는 개발자

0개의 댓글