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
Antwoord van AI
In de gepresenteerde code neemt de functie revert een slice nums en keert de volgorde van de elementen om, met behulp van twee pointers — één vanaf het begin en één vanaf het einde van de slice. Zolang de linker pointer kleiner is dan de rechter, worden de elementen verwisseld en bewegen de pointers naar elkaar toe.
Voorbeeld van code in 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) // Uitvoer: [5 4 3 2 1]
}
Omdat slices in Go via referentie worden doorgegeven, worden wijzigingen binnen de functie weerspiegeld in de originele slice, zoals de output laat zien.