Sobes.tech
Middle — Senior
24

Как реализовать слияние двух списков через цикл while с разной длиной списков?

Компании, где спрашивали
ПлатформаОФД
ЯндексЯндекс

Ответ от нейросети

sobes.tech AI

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

Пример слияния двух срезов целых чисел:

package main

import "fmt"

func mergeLists(a, b []int) []int {
    result := []int{}
    i, j := 0, 0

    for i < len(a) || j < len(b) {
        if i < len(a) {
            result = append(result, a[i])
            i++
        }
        if j < len(b) {
            result = append(result, b[j])
            j++
        }
    }

    return result
}

func main() {
    list1 := []int{1, 3, 5}
    list2 := []int{2, 4, 6, 8, 10}

    merged := mergeLists(list1, list2)
    fmt.Println(merged) // [1 2 3 4 5 6 8 10]
}

Здесь цикл for с условием i < len(a) || j < len(b) выполняется, пока не пройдены оба списка. Внутри проверяется, можно ли взять элемент из каждого списка, и если да — добавляем его в результат. Такой подход гарантирует корректную работу с разной длиной списков.