Учитывая массив, для каждого элемента мне нужно найти наименьший элемент справа от данного элемента, который больше текущего элемента.
Математически
Для каждого индекса i
в массиве A
мне нужно найти индекс j
такой, что
A[j] > A[i]
j > i
A[j] - A[i] is minimum
Мне нужно найти j
для каждого индекса i
Решение грубой силы будет O(n^2)
, и я надеюсь сделать лучше. Я думаю, что решение O(n log n)
возможно с использованием самобалансирующегося BST, но это кажется довольно сложным. Кроме того, мне нужно решение O(n)
.
Есть ли решение этой проблемы? Существует ли доказательство того, что нижняя грань O(n log n)
?