💬Реализуйте функцию, которая принимает срез целых чисел и переворачивает его без использования временного среза.
📌Простой, но достаточно эффективный способ:
// [1 2 3]
📌Другой способ с использованием рекурсивного метода: рекурсивно меняем местами первый и последний элементы, затем второй и предпоследний и так далее.
// [1 2 3]
📌Простой, но достаточно эффективный способ:
func reverse(sw []int) {
for a, b := 0, len(sw)-1; a < b; a, b = a+1, b-1 {
sw[a], sw[b] = sw[b], sw[a]
}
}
func main() {
x := []int{3, 2, 1}
reverse(x)
fmt.Println(x)
}
// [1 2 3]
📌Другой способ с использованием рекурсивного метода: рекурсивно меняем местами первый и последний элементы, затем второй и предпоследний и так далее.
func reverseRecursive(sw []int, start, end int) {
if start >= end {
return
}
sw[start], sw[end] = sw[end], sw[start]
reverseRecursive(sw, start+1, end-1)
}
func main() {
x := []int{3, 2, 1}
reverseRecursive(x, 0, len(x)-1)
fmt.Println(x)
}
// [1 2 3]