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

Условие

Реализуйте класс KthLargest, который находит k-й по величине элемент в потоке чисел. Класс должен поддерживать следующие операции:

KthLargest(k: Int, nums: IntArray): Инициализирует объект с целым числом k и потоком чисел nums.

add(val: Int): Int: Добавляет число val в поток и возвращает k-й по величине элемент.

Решение

class KthLargest(private val k: Int, nums: IntArray) {
    private val heap = PriorityQueue<Int>()

    init {
        for (num in nums) {
            heap.offer(num)
            if (heap.size > k) heap.poll()
        }
    }

    fun add(`val`: Int): Int {
        heap.offer(`val`)
        if (heap.size > k) heap.poll()
        return heap.peek()
    }
}