Как получить элементы массива, которые не вошли в слайс

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

Ответ

Для получения элементов массива, которых нет в слайсе, можно использовать map для быстрого поиска и фильтрации. Пример:

func diffArraySlice(arr [5]int, sl []int) []int {
    set := make(map[int]bool)
    for _, v := range sl {
        set[v] = true
    }

    var result []int
    for _, v := range arr {
        if !set[v] {
            result = append(result, v)
        }
    }
    return result
}

Пример использования:

arr := [5]int{1, 2, 3, 4, 5}
sl := []int{2, 4}
fmt.Println(diffArraySlice(arr, sl)) // [1 3 5]

Ключевые моменты:

  1. Создаем map для быстрого поиска элементов слайса
  2. Проходим по массиву и проверяем наличие элементов в map
  3. Возвращаем новый слайс с отсутствующими элементами

Сложность O(n+m), где n и m - длины массива и слайса соответственно.