# 189 Rotate Array

Given an array, rotate the array to the right by `k` steps, where `k` is non-negative.

Example 1:

``````Input: nums = [1,2,3,4,5,6,7], k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
``````

Example 2:

``````Input: nums = [-1,-100,3,99], k = 2
Output: [3,99,-1,-100]
Explanation:
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]
``````

Constraints:

• 1 <= nums.length <= 105
• -231 <= nums[i] <= 231 - 1
• 0 <= k <= 105

• Could you do it in-place with `O(1)` extra space?
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `````` ``````class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ n = len(nums) k = k % n self.reverse(nums, 0, n-k-1) self.reverse(nums, n-k, n-1) self.reverse(nums, 0, n-1) def reverse(self, nums: List[int], i:int, j:int) -> None: while i < j: nums[i], nums[j] = nums[j], nums[i] i += 1 j -= 1``````