Rotate Array
Description
Given an array, rotate the array to the right by k steps, where k is non-negative.
Example 1:
Example 2:
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
Could you do it in-place with O(1) extra space?
Solutions
My solution (also optimal)
Idea: directly put numbers in their new positions.
Easier to understand solution
Idea: the objective is to move the first n - k
numbers to the last n - k
positions, and move the last k
numbers to the first k
positions. If we reverse nums
, then the original first n - k
numbers and the last k
numbers are in correct ranges. Then we reverse the two ranges to make all numbers in correct positions.
E.g.,
Original array: [1, 2, 3, 4, 5, 6]
, k = 4
Objective: [3, 4, 5, 6, 1, 2]
After first reversing: [6, 5, 4, 3, 2, 1]
.[6, 5, 4, 3]
and [2, 1]
are in correct ranges but in reversed order.
Last updated