Предположим, что массив имеет элементы [1,n]
. Существует непрерывный ввод элементов (m запросов) один за другим. Как ниже.
- 5, поэтому вы должны напечатать 1 как floor и 10 как ceil, тогда массив станет
[1,5,10]
- 2, поэтому выведите 1 как floor, а 5 как ceil и array:
[1,2,5,10]
как это дано m запросов. Этаж и потолок и могут быть найдены с O (log n) сложностью времени, поскольку мы поддерживаем отсортированный массив.
Но проблема в том, что позиция элемента для вставки составляет O(log n)
, а вставка - O(n)
для перемещения других чисел в худшем случае, что приводит к O(log n) + O(n)
для каждого запроса.
Так что для m запросов в худшем случае это будет mxO(logn + n)
, что слишком дорого. Я хочу, чтобы эти операции выполнялись менее чем за mxO(logn + n)
.