Ответ
Сложность доступа к последнему элементу — O(1), но только при использовании специализированного метода getLast().
Если же получать элемент по индексу через get(list.size() - 1), сложность составит O(n), так как реализация будет выполнять линейный обход от начала списка.
Пример:
LinkedList<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add("C");
// Правильно: O(1)
String lastOptimal = list.getLast();
// Неэффективно для LinkedList: O(n)
String lastInefficient = list.get(list.size() - 1);
Почему? LinkedList хранит ссылку на хвостовой узел (tail). Метод getLast() возвращает его значение напрямую. Метод get(int index) в общем случае не оптимизирован для доступа с конца и выполняет обход с начала.