Junior — Middle
Как да оценим алгоритмичната сложност на операцията за актуализиране на елемент в свързан списък?
sobes.tech AI
Отговор от AI
Обновяването на елемент в свързан списък обикновено изисква първо да намерите този елемент, а след това да промените стойността му.
- Ако имате указател или препратка към необходимия възел, актуализирането на стойността е операция O(1).
- Ако трябва първо да намерите елемента по индекс или стойност, търсенето отнема O(n), където n е броят на елементите в списъка.
Пример на Dart (Flutter):
class Node {
int value;
Node? next;
Node(this.value);
}
void updateNodeValue(Node head, int index, int newValue) {
Node? current = head;
int i = 0;
while (current != null && i < index) {
current = current.next;
i++;
}
if (current != null) {
current.value = newValue; // O(1) актуализация
}
}
Общата сложност на актуализиране на елемент по индекс е O(n), ако няма директен достъп до възела.