题目:给定一个数组,将数组中的元素向右移动 k
个位置,其中 k
是非负数。
示例:输入 nums = [1,2,3,4,5,6,7], k = 3 输出 [5,6,7,1,2,3,4]
解法一:arraycopy(原数组名称,原数组起始下标,目标数组名称,目标数组起始下标,截取长度)
public class RotateArray {
public void rotate(int[] nums, int k) {
int l = nums.length;
int[] array = new int[l];
System.arraycopy(nums,l-k%l,array,0,k%l);
System.arraycopy(nums,0,array,k%l,l-k%l);
System.arraycopy(array,0,nums,0,l);
}
}
解法二:遍历原数组,对新数组赋值
public class RotateArray {
public void rotate(int[] nums, int k) {
int l = nums.length;
int[] array = new int[l];
for(int i=0;i<l;i++){
array[(i+k)%l] = nums[i];
}
System.arraycopy(array,0,nums,0,l);
}
}