Я вижу много статей в Интернете, объясняющих временную сложность, но не нашел ничего хорошего, что хорошо объясняет пространственную сложность. Я пытался решить следующий вопрос интервью
У вас есть два числа, представленные связанным списком, где каждый узел содержит одну цифру. Цифры хранятся в обратном порядке, так что цифра Ts находится во главе списка. Напишите функцию, которая складывает два числа и возвращает сумму в виде связанного списка.
ПРИМЕР
Ввод: (7 -> 1 -> 6) + (5 -> 9 -> 2). То есть 617 + 295.
Вывод: 2 -> 1 -> 9. То есть 912.
Мое решение для этого следующее:
private Node addLists(Node head1, Node head2) {
Node summationHead = null;
Node summationIterator = null;
int num1 = extractNumber(head1);
int num2 = extractNumber(head2);
int sum = num1 + num2;
StringBuilder strValue = new StringBuilder();
strValue.append(sum);
String value = strValue.reverse().toString();
char[] valueArray = value.toCharArray();
for (char charValue : valueArray) {
Node node = createNode(Character.getNumericValue(charValue));
if (summationHead == null) {
summationHead = node;
summationIterator = summationHead;
} else {
summationIterator.next = node;
summationIterator = node;
}
}
return summationHead;
}
private Node createNode(int value) {
Node node = new Node(value);
node.element = value;
node.next = null;
return node;
}
private int extractNumber(Node head) {
Node iterator = head;
StringBuilder strNum = new StringBuilder();
while (iterator != null) {
int value = iterator.element;
strNum.append(value);
iterator = iterator.next;
}
String reversedString = strNum.reverse().toString();
return Integer.parseInt(reversedString);
}
Может ли кто-нибудь вывести космическую сложность для этого? Спасибо.