赞
踩
题目:
给定一个数组,将数组中的元素向右移动 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。