添加链接描述
class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""# 思路:三次数组翻转n=len(nums)k=k%nnums[:] = nums[-k:] + nums[:-k]
思路就是:
- 事实上就是数组的三次翻转
- 这里
nums[-k:]
的意思是从倒数第k个元素到末位 nums[:-k]
的意思是从首位到-k个元素(不包含第-k个元素)- 而
nums[:]
是为了在原表上操作,如果是nums=…就不是在原表上操作 - 如果使用nums = nums[-k:] + nums[:-k]:就是创建了一个新的nums,并改变原nums的引用(你后面的nums会覆盖原来的nums,通过id(nums)可以看出来)
这里再写几种python中翻转的操作
1. reverse()
这个函数会对原列表进行操作,并且只对列表操作
2. reversed()
这个函数不会对原列表操作,并且可以对除了列表之外还有元组,字符串等
3. 切片操作
list[start : end][ : : -1]对列表进行操作,但跟ed一样,不会对原列表进行操作