思路:可以看一下转换后跟原数组变化的部分在哪里,使用两次反转就能做到,因为要向右移动k位,所以移动后的元素是最后k位变成了前k位,
代码如下:
public static void rotate(int[] nums, int k) {
k%=nums.length;
reverse(nums,0,nums.length-1);
reverse(nums,0,k-1);
reverse(nums,k,nums.length-1);
}
public static void reverse(int[] nums,int begin,int end){
while (begin<end){
int temp =nums[begin];
nums[begin++] = nums[end];
nums[end--]= temp;
}
}