У меня есть отсортированный список целых чисел, и я хочу вставить в этот список любой элемент в постоянное время. Мне разрешено выполнять предварительную обработку, если она позволит мне запускать эту операцию в постоянное время (то есть независимо от того, сколько раз я повторяю эту операцию после предварительной обработки, она должна работать в постоянное время).Вставка в отсортированный список, в постоянное время
Как это можно сделать?
Edit: я могу думать о еще пару ограничений, чтобы сделать его немного менее двусмысленными, и немного более сложным, чтобы решить -
- список должен быть сохранен в отсортированном порядке после вставки (s)
- Или список должен каким-то образом поддерживать максимальные/минимальные операции в посто нном вводе времени.
Check [этот ответ] (http://stackoverflow.com/a/1933099/115272) –
Если диапазон ваших целочисленных значений невелики. - вы можете использовать ведро за целое значение При. вставьте значение, вы просто индексируете в ведро значение (постоянное время) и добавляете его в ведро (также постоянное время). –
Джейкоб, это только O (1), когда вы знаете, куда вы хотите вставить. (n) на эту позицию. Джейсон, это не плохо bu t «любой элемент» в вопросе кажется немного тревожным - диапазон может не быть ограниченным. – paxdiablo