Вот упражнение (3-15) в книге "Руководство по разработке алгоритмов".
Создайте структуру данных, которая позволяет искать, вставлять и удалять целое число X в O (1) раз (т.е. постоянное время, независимо от общего количества сохраненных целых чисел). Предположим, что 1 ≤ X ≤ n и что существуют m + n единиц пространства, где m - максимальное количество целых чисел, которое может быть в таблице в любой момент времени. (Подсказка: используйте два массива A [1..n] и B [1..m].) Вам не разрешено инициализировать A или B, так как это займет операции O (m) или O (n). Это означает, что массивы полны случайного мусора, поэтому вы должны быть очень осторожны.
Я действительно не ищу ответа, потому что я даже не понимаю, что это упражнение просит.
Из первого предложения:
Создайте структуру данных, которая позволяет искать, вставлять и удалять целое число X в O (1) время
Я могу легко создать такую структуру данных. Например:
Поскольку 1 <= X <= n, поэтому у меня есть только бит-вектор из n слотов, и пусть X является индексом массива, когда вставка, например, 5, затем a [5] = 1; при удалении, например, 5, затем a [5] = 0; при поиске, например, 5, я могу просто вернуть [5], правильно?
Я знаю, что это упражнение сложнее, чем я себе представляю, но каков ключевой момент этого вопроса?