Учитывая массив A [1..n]
, мы хотим вычислить другой массив B [1..n]
такой, что B [i]
сохраняет ближайший элемент слева от A [i]
, который меньше, чем A [i]
.
Сложность времени должна быть O (n)
.
(Для i> 1
, если нет таких меньших элементов слева, то B [i]
просто содержит A [i]
и B [1] = A [1]
.)
Пример:
ввод: 6,9,12,17 , 11
вывод: 6,6, 9, 12, 9
Я думал о реализации стека,
поместите A [1]
в B [1]
, затем поместите в стек.
для заполнения B [i]
, сравните A [i]
с элементами стека и выталкивайте, пока не получите меньший элемент.
наконец, вставьте A [i]
в стек.
Правильно ли приведенный выше подход и есть ли более дешевое решение?