旋转数组
//day03 rotate Array
public class TestRotate {
public static List rotate(String[] a,int k) {
List list = Arrays.asList(a);
int size = list.size();
String[] result = new String[size];
for(int i =0;i=size) {
result[(i+k)%k] = list.get(i).toString();
}else {
result[i+k] = list.get(i).toString();
}
}
return Arrays.asList(result);
}
public static void main(String[] args) {
String[] a = {"4","5","7","1","3","8","200","199"};
/*String[] b = new String[8];
b[2]="2";
System.out.println(b[1]+","+b[2]);*/
//此处报错,新建list并初始化长度会分配一个相应长度的空间,但size还是数组的实际长度,当使用add用下标赋值时,size(为0)和index,报错
// java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
List list1 = new ArrayList(8);
list1.add(4,4);
List list = rotate(a,5);
System.out.println(list.toString());
}
将包含 n 个元素的数组向右旋转 k 步。
例如,如果 n = 7 , k = 3,给定数组 [1,2,3,4,5,6,7] ,向右旋转后的结果为 [5,6,7,1,2,3,4]。
网上
private static int[] Rotate1(int[] nums, int k)
{
int[] result = new int[nums.Length];//根据nums数组长度生成和其一样长度的数组
for (int i = 0; i < nums.Length; i++)
{
result[(i + k) % nums.Length] = nums[i];//这里用到了取余,也是这个方法的核心
}
return result;
}
参考:https://blog.csdn.net/wangbo1998/article/details/79804909