类似这样:
int[] a={1,2,3,4,5}
左旋3个之后 {4,5,1,2,3}
右旋3个之后 {3,4,5,1,2}
其中调用的函数
public static int[] copyOfRange(int[] original, int from, int to)
- 参数
original
- 要从中复制范围的数组from
- 要复制的范围的初始索引(包括)to
- 要复制的范围的最终索引,排他。 (该索引可能位于数组之外)
System.arraycopy()
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- 参数
src
- 源数组。srcPos
- 源数组中的起始位置。dest
- 目标数组。destPos
- 目的地数据中的起始位置。length
- 要复制的数组元素的数量。
import java.util.Arrays;
public class Rotate{
public static void main(String[] args){
int[] a={1,2,3,4,5,6,7,8,9,10};
rotate(a,3);
}
//左旋数组
public static void rotate(int[] nums,int k){
k=k%nums.length;
int[] arr=Arrays.copyOfRange(nums,k,nums.length);
System.arraycopy(nums,0,nums,nums.length-k,k);
System.arraycopy(arr,0,nums,0,arr.length);
System.out.println(Arrays.toString(nums));
}
//右旋数组
public static void rightRotate(int[] nums,int k){
k=k%nums.length;
int[] arr=Arrays.copyOfRange(nums,0,nums.length-k);
System.arraycopy(nums,nums.length-k,nums,0,k);
System.arraycopy(arr,0,nums,k,arr.length);
System.out.println(Arrays.toString(nums));
}
}