给定一个数组,将数组中的元素向右移动 k
个位置,其中 k
是非负数。
正解:
class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ t=len(nums) k=k % t#取模是最棒的想法! nums[:]=nums[::-1] nums[:k]=nums[:k][::-1] nums[k:]=nums[k:][::-1] return nums
class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ n=len(nums)#设nums=[1,2,3,4,5,6,7],k=3,应得[5,6,7,1,2,3,4] k=k%n def turn(x,y): while(x<y): nums[x],nums[y]=nums[y],nums[x] x+=1 y-=1 turn(0,n-k-1)#将第一段反转,即1234反转成4321 turn(n-k,n-1)#将第二段反转,即567变成765 turn(0,n-1)#全部反转,即4321765变成5671234 return nums