Я ищу метод, который меняет тот же экземпляр данного списка, с дополнительным пространством O (1) и Вовремя.
это не HW, и я ищу какой-нибудь библиотечный метод для выполнения этой работы, так как это всего лишь упражнение для меня и из чистого любопытства.
есть идеи, как это сделать с дополнительным пространством O (1) и временем O (n)? (и, если возможно, без размышлений)?
подпись public
.
(*) предполагаем, что get () для начала и конца списка - это O (1), но до середины этого списка - O (n).
Я придумал рекурсивное решение, но это пространство O (n), время O (n)
public <T> void reverseAux(List<T> list,int size) {
if (size == 0) return;
T elem = list.remove(size-1);
reverseAux(list,size-1);
list.add(0,elem);
}
public <T> void reverse(List<T> list) {
reverseAux(list, list.size());
}
EDIT: Я ищу решение java для List
, единственное предположение о реализации - время доступа O (1) для заголовка и хвоста и использование интерфейса List
.