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.
show hint
Hint:
Could you do it in-place with O(1) extra space?
Related problem: Reverse Words in a String II
void reverse(int[] nums, int st, int ed) {
while (st < ed) {
int t = nums[st];
nums[st] = nums[ed];
nums[ed] = t;
st++;
ed--;
}
}
public void rotate(int[] nums, int k) {
int length = nums.length;
k = k % length;
if (length == 1 || k == 0)
return;
reverse(nums, 0, length - k - 1);
reverse(nums, length - k, length - 1);
reverse(nums, 0, length - 1);
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。