先反转整体数组,再反转前 k 个([0, k - 1]),再反转后面剩余的([k, n - 1]),即为答案。
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classSolution:defrotate(self,nums:List[int],k:int)->None:"""
Do not return anything, modify nums in-place instead.
"""defreverse(i:int,j:int)->None:whilei<j:nums[i],nums[j]=nums[j],nums[i]i+=1j-=1n=len(nums)k%=nreverse(0,n-1)reverse(0,k-1)reverse(k,n-1)