给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数(自己写的代码耗时长,内存占用少,示例代码耗时几乎没有)
此外,数组的复制中不能简单的使numss=nums,这样nums中的值改变,numss中的值也会随之变化。
其中数组的复制方法有:(nums为源数组)
for循环 for(a=0;a<nums.length;a++) numss[a]=nums[a];
clone方法 numss=nums.clone();
System.arraycopy方法 System.arraycopy(nums, 0, numss, 0, nums.length);
Arrays.copyOf方法 numss=Arrays.copyOf(nums,nums.length)
Arrays.copyOfRange方法 numss=Arrays.copyOfRange(nums,0,nums.length)
class Solution {
public void rotate(int[] nums, int k) {
int[]numss =new int[nums.length];
numss = Arrays.copyOf(nums,nums.length);//复制数组
for(int a=0;a<nums.length;a++){
nums[(k+a)%nums.length]=numss[a];
}
}
}

示例代码:
class Solution {
public 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 void reverse(int[] nums,int start,int end){
while(start<end){
int temp = nums[end];
nums[end]=nums[start];
nums[start]=temp;
start+=1;
end-=1;
}
}
}
