题目:
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
解答:
方法一:先局部,再全局
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
n=len(nums)
def invert(A,start,end):
t=(end-start+1)//2
for i in range(t):
A[start+i],A[end-i]=A[end-i],A[start+i]
return A
if k>n:
k%=n
invert(nums,0,n-1-k)
invert(nums,n-k,n-1)
invert(nums,0,n-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)
def invert(A,start,end):
while start<end:
A[start],A[end]=A[end],A[start]
start+=1
end-=1
return A
if k>n:
k%=n
invert(nums,0,n-1)
invert(nums,0,k-1)
invert(nums,k,n-1)
return nums