Go 语言高效实现数组循环右移:一次循环完成旋转
以下是 Go 语言实现的 rotate 函数,通过三次翻转操作实现数组循环右移:
func rotate(nums []int, k int) {
n := len(nums)
k = k % n
if k == 0 {
return
}
reverse(nums)
reverse(nums[:k])
reverse(nums[k:])
}
func reverse(nums []int) {
n := len(nums)
for i := 0; i < n/2; i++ {
nums[i], nums[n-i-1] = nums[n-i-1], nums[i]
}
}
该函数接收一个整数数组和一个整数 k 作为参数,将数组循环右移 k 个位置。该函数通过三次翻转操作实现旋转。首先,将整个数组翻转;然后,将前 k 个元素翻转;最后,将剩余的元素翻转。
原文地址: https://www.cveoy.top/t/topic/nf67 著作权归作者所有。请勿转载和采集!