#java
Вопрос:
У меня есть пользовательский двусвязный список, и я хочу использовать расширенный цикл for для печати элементов за O(n) время. Поэтому я скопировал все элементы в односвязный список, но это занимает O(n*2) времени. Есть ли более эффективный способ копирования элементов?
Комментарии:
1. Повторение дважды связанного списка должно занять O(n) времени. Так и должно быть. Но вам не нужно копировать его, чтобы повторить. Почему вы не опубликовали никакого кода?
2.
O(n) = O(n · 2)
по определению (вы можете выбрать константы, чтобы оба выражения были равны)3. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Вам не нужно делать копию для печати элементов. Итерация связанного списка (двусвязного или нет) должна быть O(n):
List myList = createMyDoublyLinkedList();
for (Object item : myList) {
System.out.prointln(item);
}
Чтобы лучше понять ваш вопрос, вам нужно будет опубликовать код, который у вас есть.