# 0189-rotate-array Try it on leetcode ## Description

Given an integer array nums, 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:

 

Follow up:

## Solution(Python) ```Python class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ self.inplaceoptimal(nums, k) # poping each element and appending in front # Time=complexity: O(n,k) # Space complexity: O(n) def bruteforce(self, nums, k): k %= len(nums) for _ in range(k): nums.insert(0, nums.pop()) # use list com,phgrehension inspace # Time=complexity: O(n) # Space complexity: O(n) def listcomprehension(self, nums, k): k = k% len(nums) nums[:] = nums[-k:] + nums[:-k] # use inplace # Time=complexity: O(n) # Space complexity: O(1) def inplaceoptimal(self, nums, k): n = len(nums) k %= n def reverse(l ,r): while l < r: nums[l], nums[r] = nums[r], nums[l] l+=1 r -= 1 reverse(0,n -1 ) reverse(0, k -1) reverse(k , n-1) ```