Какова временная сложность следующей функции, которая удаляет элемент из слайса?
Это O (n)? Как функция добавления в Go влияет на сложность времени? (Поскольку следующий код пытается удалить элемент, емкость нового среза меньше или равна предыдущему срезу, у меня сложилось впечатление, что только новый заголовок среза создается только за кулисами, а O (n) будет сложностью по времени).
Срез, который передается в качестве параметра функции, имеет емкость, длина равна.
// Remove a given element from slice
func Remove(elementToRemove string, elements []string) []string {
if govalidator.IsNull(elementToRemove) {
return elements
}
for i := len(elements) - 1; i >= 0; i-- {
if elements[i] == elementToRemove {
elements = append(elements[:i], elements[i+1:]...)
break
}
}
return elements
}