func revert(nums []int) { // 1 2 3 4 => 4 3 2 1

В представленном коде функция revert принимает срез nums и меняет порядок элементов на обратный, используя два указателя — с начала и с конца среза.

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

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

В представленном коде функция revert принимает срез nums и меняет порядок элементов на обратный, используя два указателя — с начала и с конца среза. Пока левый указатель меньше правого, элементы меняются местами, и указатели сдвигаются навстречу друг другу.

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

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

Условие

func revert(nums []int) { // 1 2 3 4 => 4 3 2 1

}

func main() { a := []int{1,2,3,4,5} revert(a) fmt.Println(a) }

func revert(nums []int) { // 1 2 3 4 => 4 3 2 1 l, r := 0, len(nums)-1

for l < r {
    nums[l], nums[r] = nums[r], nums[l]
    l++
    r--
}

}

func main() { a := []int{1,2,3,4,5} revert(a) fmt.Println(a) }

Ответ

В представленном коде функция revert принимает срез nums и меняет порядок элементов на обратный, используя два указателя — с начала и с конца среза. Пока левый указатель меньше правого, элементы меняются местами, и указатели сдвигаются навстречу друг другу.

Пример кода на Go:

package main

import "fmt"

func revert(nums []int) {
    l, r := 0, len(nums)-1
    for l < r {
        nums[l], nums[r] = nums[r], nums[l]
        l++
        r--
    }
}

func main() {
    a := []int{1, 2, 3, 4, 5}
    revert(a)
    fmt.Println(a) // Вывод: [5 4 3 2 1]
}

Так как срезы в Go передаются по ссылке, изменения внутри функции отражаются на исходном срезе, что и демонстрирует вывод.

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

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

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

Подробнее