leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

rotate_array.py (922B)


# 189. Rotate Array

"""
given an integer array 'nums', rotate the array to the right by 'k' stops,
where 'k' is non-negative.
"""


class Solution(object):
    def reverse(self, nums, start, end):
        while start < end:
            tmp = nums[start]
            nums[start] = nums[end]
            nums[end] = tmp
            start += 1
            end -= 1

    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 %= n
        if k < 0:
            k += n
        self.reverse(nums, 0, n - k - 1)
        self.reverse(nums, n - k, n - 1)
        self.reverse(nums, 0, n - 1)


if __name__ == "__main__":
    obj = Solution()
    n1 = [1, 2, 3, 4, 5, 6, 7]
    n2 = [-1, -100, 3, 99]
    obj.rotate(n1, k=3)
    obj.rotate(n2, k=2)
    print(n1)
    print(n2)