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) выполняется, пока не пройдены оба списка. Внутри проверяется, можно ли взять элемент из каждого списка, и если да — добавляем его в результат. Такой подход гарантирует корректную работу с разной длиной списков.