Sobes.tech
Senior

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) }

sobes.tech AI

Răspuns de la AI

În codul prezentat, funcția revert primește o secvență nums și inversează ordinea elementelor, folosind doi indicatori — unul de la început și unul de la sfârșitul secvenței. Atâta timp cât indicatorul din stânga este mai mic decât cel din dreapta, elementele sunt schimbate între ele, iar indicii se deplasează unul spre celălalt.

Exemplu de cod în 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) // Ieșire: [5 4 3 2 1]
}

Deoarece slice-urile în Go sunt transmise prin referință, modificările din interiorul funcției se reflectă asupra slice-ului original, așa cum arată ieșirea.