- 旋转数组
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
if len(nums) < k:
k = k % len(nums)
self.reverse(nums,0,len(nums)-1)
self.reverse(nums,0,k-1)
self.reverse(nums,k,len(nums)-1)
return nums
def reverse(self,nums,start,end):
while start < end:
temp = nums[start]
nums[start] = nums[end]
nums[end] = temp
start += 1
end -= 1
思路一:每个元素后移交换,复杂度:时间O(n*k),空间O(1)
思路二:创建一个数组nums[i]放入新数组nums[i+k],时间O(n),空间O(n)
思路三:旋转数组,如代码,时间O(n),空间O(1)