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]
.
public class Solution {
public void rotate(int[] nums, int k) {
if (nums == null || k <= 0) {
return;
}
k = k % nums.length;
k = nums.length - k;
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
reverse(nums, 0, nums.length - 1);
}
private void reverse(int[] nums, int s, int e) {
// TODO Auto-generated method stub
int tmp = 0;
while (s < e) {
tmp = nums[s];
nums[s] = nums[e];
nums[e] = tmp;
s++;
e--;
}
}
}