Удаление среднего элемента состоит из двух частей:
- Поиск среднего элемента
- Удаление этого элемента
ArrayList
равно O(1)
при произвольном доступе, поэтому 1-й шаг для массива быстрый.В то время как LinkedList
равен O(1)
при удалении (данный узел), * List 2-ой легко сделать.
То, что вы хотите, лучшее из обоих миров .
IMO этого легко достичь, если вы напишите пользовательский (или расширите существующий) LinkedList .Вам понадобится дополнительная справочная переменная middle
, которая:
- переместится на
next
при вставке, если размер станет нечетным. - переместится на
prev
при удаленииесли размер становится нечетным.
Вы также можете делать четные в обоих случаях, но они должны быть одинаковыми (четными или нечетными).