旋转数组
//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;i++) { if(i+k>=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
posted on 2019-12-09 16:58 sunshineicy 阅读(304) 评论(0) 编辑 收藏 举报