Я ищу структуру данных (или структуры), которая позволила бы мне сохранить упорядоченный список целых чисел, без дубликатов, с индексами и значениями в том же диапазоне.
Мне нужно четыре основных операции, чтобы быть эффективными, в грубом порядке важности:
- принимая значение из заданного индекса
- нахождение индекса заданного значения
- вставка значения по заданному индексу
- удаление значения по заданному индексу
Используя массив, у меня есть 1 в O (1), но 2 - O (N), а вставка и удаление дороги (O (N), как я полагаю).
Связанный список имеет O (1) вставку и удаление (после того, как у вас есть node), но 1 и 2 - O (N), таким образом отрицая выигрыш.
Я попытался сохранить два массива [index] = value и b [value] = index, которые превращают 1 и 2 в O (1), но поворачивают 3 и 4 в еще более дорогостоящие операции.
Есть ли структура данных, более подходящая для этого?