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?
Solution
- if n = 7 and k = 3
- Reverse the whole array: [1 2 3 4 5 6 7] => [7 6 5 4 3 2 1]
- Reverse array[0,k]: [7 6 5 4 3 2 1] => [5 6 7 4 3 2 1]
Reverse array[n-k,n]: [5 6 7 4 3 2 1] => [5 6 7 1 2 3 4]
Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
- Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|