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

results matching ""

    No results matching ""