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--;
}
}
}
本文介绍了一种高效的数组旋转方法,通过三次反转操作实现数组元素的右移。该算法首先计算需要移动的实际位置,然后分三步反转数组的不同部分,最终达到指定的旋转效果。
379

被折叠的 条评论
为什么被折叠?



