Какая сложность операции удаления из ArrayList

«Какая сложность операции удаления из ArrayList» — вопрос из категории Алгоритмы и структуры данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Удаление из ArrayList имеет временную сложность O(n) в худшем случае (удаление первого элемента), так как требует сдвига всех последующих элементов. В лучшем случае (удаление последнего элемента) — O(1), так как сдвиг не нужен.

val list = arrayListOf(1, 2, 3, 4)
list.removeAt(0) // O(n) — сдвиг элементов 2, 3, 4
list.removeAt(list.size - 1) // O(1) — просто удаление

Если часто требуется удаление, лучше использовать LinkedList (удаление за O(1)), но учти, что у него другие trade-offs (например, доступ по индексу O(n)).