Какова временная сложность доступа к последнему элементу LinkedList в Java?

Ответ

Сложность доступа к последнему элементу — 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) в общем случае не оптимизирован для доступа с конца и выполняет обход с начала.

Ответ 18+ 🔞

Да ты посмотри на эту штуку, LinkedList, блядь! Доступ к последнему элементу — вроде бы O(1), но тут, сука, подвох, как в дешёвом портвейне.

Если ты, конечно, не мудак и используешь специальный метод getLast(), то всё заебись — он сразу к хвосту прыгнет, потому что там ссылка на последний узел лежит. Одна операция и готово, красота.

А вот если ты такой умный, решил через индекс получить: get(list.size() - 1), то готовься, блядь, к пиздецу. Потому что эта реализация начнёт ползти с самого начала списка, как черепаха в сиропе, пока не доползёт до нужного места. И сложность уже не O(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) — начнёт ползать от "A" к "C", ебать его в сраку.
String lastInefficient = list.get(list.size() - 1);

Вот в чём, блядь, соль! LinkedList помнит, где у него хвост (tail), поэтому getLast() — это просто взять и отгрызть. А get(int index) — он же, сука, универсальный, он не знает, что ты с конца полез. Он начинает с головы и пиздует по всем узлам, пока не найдёт твой индекс. Вот такая, блядь, хитрая жопа получается.