Sobes.tech
Junior — Middle

W jakich sytuacjach dodanie elementu na koniec ArrayList może mieć złożoność czasową O(n)?

sobes.tech AI

Odpowiedź od AI

Dodanie elementu na koniec ArrayList zazwyczaj ma amortyzowaną złożoność czasową O(1), ale w niektórych przypadkach może to być O(n). Dzieje się tak, gdy wewnętrzna tablica przechowująca elementy jest pełna i konieczne jest jej powiększenie.

Przy dodawaniu nowego elementu:

  • Jeśli jest miejsce, element jest po prostu dodawany — O(1).
  • Jeśli miejsca nie ma, tworzy się nową tablicę większego rozmiaru (zwykle 1,5-2 razy większą), a wszystkie istniejące elementy są kopiowane do nowej tablicy — ta operacja jest O(n).

W związku z tym, dodanie elementu może mieć złożoność czasową O(n) dokładnie w momencie powiększania wewnętrznej tablicy.