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.
Related problem: Reverse Words in a String II
Credits:
Special thanks to @Freezen for adding this problem and creating all test cases.
Analysis:
We can rotate string also like this.
Solution:
public class Solution { public void rotate(int[] nums, int k) { if (nums.length==0) return; int steps = k % nums.length; if (steps==0) return; swap(nums,0,nums.length-1); swap(nums,0,steps-1); swap(nums,steps,nums.length-1); } public void swap(int[] nums, int start, int end){ while (start<end){ int temp = nums[start]; nums[start++] = nums[end]; nums[end--] = temp; } } }