Требуется реализовать функцию zip, которая соединяет элементы двух слайсов в слайс пар

Функция zip должна пройтись по двум слайсам и сформировать слайс пар, длина которого равна длине меньшего из двух исходных слайсов. Вот пример реализации на Go:

Короткий ответ

Что ответить на собеседовании

Функция zip должна пройтись по двум слайсам и сформировать слайс пар, длина которого равна длине меньшего из двух исходных слайсов. Вот пример реализации на Go:

Подробный разбор

Ответ с пояснениями

Условие

Требуется реализовать функцию zip, которая соединяет элементы двух слайсов в слайс пар

func main() {
    s1, s2 := []int{1, 2, 3}, []int{4, 5, 6, 7, 8}
    fmt.Println(zip(s1, s2)) // [[1 4] [2 5] [3 6]]
}

func zip(s1 []int, s2 []int) [][]int {
    //...
}

Ответ

Функция zip должна пройтись по двум слайсам и сформировать слайс пар, длина которого равна длине меньшего из двух исходных слайсов. Вот пример реализации на Go:

func zip(s1 []int, s2 []int) [][]int {
    length := len(s1)
    if len(s2) < length {
        length = len(s2)
    }
    result := make([][]int, length)
    for i := 0; i < length; i++ {
        result[i] = []int{s1[i], s2[i]}
    }
    return result
}

В этом коде мы определяем минимальную длину, создаём слайс нужного размера и заполняем его парами элементов из s1 и s2.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее