本题思路:三次旋转
1. 1234567 -》 7654321 经过第一次旋转可把后3位数转到前面
2. 7654321 -》 5674321
3. 5674321 -》5671234
其他思路:
1.nums[ : ] = nums[ k: ] + nums[ :k ] 切片
2. for i in range(k) : nums.insert(0,nums.pop())
注意:
1.本题要求原地修改,所以第一次旋转时: nums[ : ] = nums[ ::-1 ]
a) 如此实在原地址上修改
a) 如果直接用 nums = nums[ ::-1 ] 赋值给了一个新地址。
代码:
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
k%=len(nums)
nums[:] = nums[::-1]
nums[k:] = nums[k:][::-1]
nums[:k] = nums[:k][::-1]
return