题目
方法一:new一个新的数组
public class Rotate {
public static void main(String[] args) {
Rotate rotate = new Rotate();
int[] nums = {1,2,3,4,5,6,7};
int k = 3;
/*int[] nums = {-1,-100,3,99};
int k = 2;*/
rotate.rotate(nums, k);
}
public void rotate(int[] nums, int k) {
int l = nums.length;
//new一个新数组存轮转后的值
int[] newArr = new int[l];
for (int i = 0; i < l; ++i) {
//System.out.println(i + " " + k + " " + n + " " + ((i + k) % n));
newArr[(i + k) % l] = nums[i]; //求余
}
System.arraycopy(newArr, 0, nums, 0, l); //拷贝
//System.out.println(Arrays.toString(nums));
}
}
LeetCode测试结果