题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
进阶:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
初步思考是新建数组,append进去,重新赋值一个数组;
看到部分旋转-整体旋转的思路,实现了下
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: None Do not return anything, modify nums in-place instead.
"""
n=len(nums)
k=k % n
def reverse(left, right):
while left < right:
nums[left]=nums[right]
nums[right]= nums[left]
left += 1
right-=1
reverse(0,n-k-1)
reverse(n-k,n-1)
reverse(0,n-1)