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`)
*/