旋转数组

//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 个元素的数组向右旋转 步。

例如,如果  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编辑  收藏  举报

导航