Loading... 这道题如果普通手段,其实就是通过另外一个数组来实现,但是如果要原地完成就比较难想到了。 其实可以通过三次翻转法,也就是先对整个数组翻转,然后翻转前 k 个,再翻转后 n-k 个,这样就能达到右移的效果。 ```go func rotate(nums []int, k int) { n := len(nums) for i, j := 0, n-1; i < j; i, j = i+1, j-1 { nums[i], nums[j] = nums[j], nums[i] } k = k % n for i, j := 0, k-1; i < j; i, j = i+1, j-1 { nums[i], nums[j] = nums[j], nums[i] } for i, j := k, n-1; i < j; i, j = i+1, j-1 { nums[i], nums[j] = nums[j], nums[i] } } ``` Last modification:July 11, 2025 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏