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]
.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
public void rotate(int[] nums, int k) {
if(nums==null) {
return;
}
int n = nums.length;
k = k%n;
if(n<=1) {
return;
}
int[] temp = new int[k];
System.arraycopy(nums, n-k, temp, 0, k); //把后k个元素存到temp中
System.arraycopy(nums, 0, nums, k, n-k); //把nums里的前n-k个元素挪到后面
System.arraycopy(temp, 0, nums, 0, k); //把temp中的k个元素放加nums
}