Сложность времени для функции добавления среза - PullRequest
1 голос
/ 31 октября 2019

Какова временная сложность следующей функции, которая удаляет элемент из слайса?

Это 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
}
...