Rotate Array
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
Note: Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
Hint: Could you do it in-place with O(1) extra space? Related problem: Reverse Words in a String II
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: void Do not return anything, modify nums in-place instead.
"""
if k == 0 or k == len(nums):
return
if k > len(nums):
k = k % len(nums)
nums[:] = [nums.pop() for i in range(k)][::-1] + nums
Use reverse function is a bit faster
class Solution(object):
def rotate(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: void Do not return anything, modify nums in-place instead.
"""
if k == 0 or k == len(nums):
return
if k > len(nums):
k = k % len(nums)
tmp = [nums.pop() for i in range(k)]
tmp.reverse()
nums[:] = tmp + nums