func rotate(nums []int, k int) { for i := 0; i < k; i++ { r := nums[len(nums)-1] for n := len(nums) - 1; n-1 >= 0; n-- { nums[n] = nums[n-1] } nums[0] = r } }
时间复杂度: O(n*k) 空间复杂度: O(1) 没有额外空间被使用。
方法二: 使用额外的数组
计算出旋转后的数字所在的key值 (n+k)%len(nums)
1 2 3 4 5 6 7 8 9 10
func rotate(nums []int, k int) { var newNums []int for n:=range nums{ newNums = append(newNums,nums[n]) } for n:=range newNums { nums[(n+k)%len(nums)] = newNums[n] } }