Я пытаюсь придумать что-то, чтобы решить следующее:
Учитывая максимальную кучу, представленную как массив, верните k-й наибольший элемент без изменения кучи. Меня попросили сделать это в линейном времени, но мне сказали, что это можно сделать в режиме журнала.
Я думал о решении:
Используйте вторую максимальную кучу и заполните ее с помощью k или k + 1 значений в ней (ширина первого обхода в исходную), затем введите k элементов и получите желаемый. Я полагаю, что это должно быть O (N + logN) = O (N)
Есть ли лучшее решение, возможно, в O (logN)?