Как насчет использования кучи для хранения значений. Эта стоимость равна n, когда вы просматриваете каждое значение в массиве.
Затем пройдите кучи, чтобы получить наименьшее значение k.
Время выполнения O (n) + O (k) = O (n)
Конечно, пространство памяти теперь O (n + n)