Middle
32
Care este complexitatea inserției la sfârșitul unei liste (listă Python)? De ce uneori este O(n)?
Companiile au fost întrebate
ИП Ганус Александр Андреевич
Răspuns de la AI
sobes.tech AI
Вставка элемента в конец списка Python обычно имеет амортизированную сложность O(1). Это связано с тем, что список реализован как динамический массив, который выделяет некоторый запас памяти.
Однако иногда операция занимает O(n), когда текущий выделенный буфер заполнен, и требуется выделить новый массив большего размера и скопировать туда все элементы. Это копирование и приводит к линейной сложности в этот момент.
Пример:
lst = [1, 2, 3]
lst.append(4) # Обычно O(1)
Но если внутренний буфер заполнен, Python выделит новый массив, скопирует старые элементы и добавит новый — это O(n).