Опишите структуру данных, где:
- Любой элемент индексируется целым значением, как в массиве
- целое число может индексировать одно значение
- целые числа, используемые для индексации элементов: смежные : они идут от 1 до
n
без отверстий
- Получение элемента в позиции
i
(то есть: элемент, связанный с целым числом i
) должен быть максимально быстрым - Вставка новогоЭлемент в позиции
i
должен быть максимально быстрым - . Это сместит вправо любой элемент с
i
и далее
- УдалениеЭлемент в позиции
i
также должен быть максимально быстрым - . Это сместит влево любой элемент от
i+1
и далее
РЕДАКТИРОВАТЬ: маленькая вещь, о которой я забыл: индексы предметов могут быть сдвинуты только при добавлении / удалении, они не могут быть произвольно поменяны местами.
В этом описании n
- это размер структуры (т. Е. Сколько элементов в ней содержится), а i
- общее целое число (1 <= <code>i <= <code>n), конечно.
Я слышал это от парня, которого я встретил на своем факультете.Не знаю, будет ли это вопрос об интервью, вопрос об экзамене, просто загадка или что-то еще, но я думаю, это может быть что угодно.
Если я правильно помню (но, эй, это было до 24 декабря), он сказалтакая структура данных может быть реализована либо с O(sqrt n)
вставкой / удалением и O(1)
временем доступа, либо с O(log n)
для любой операции.
РЕДАКТИРОВАТЬ: были даны некоторые правильные ответы.Прочтите его, если вы не хотите больше думать об этой проблеме.