题目
解题思路
很明显是三次翻转,注意这里的k需要先处理成小于数组大小的数
复杂度
时间复杂度:O(n)
,相当于翻转数组两次
Code
func rotate(nums []int, k int) {
if k == 0 {
return
}
k = k % len(nums)
reverse(nums)
reverse(nums[:k])
reverse(nums[k:])
}
func reverse(nums []int) {
var i, j = 0, len(nums) - 1
for i < j {
nums[i], nums[j] = nums[j], nums[i]
i++
j--
}
}