zoukankan      html  css  js  c++  java
  • 旋转数组

    //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

  • 相关阅读:
    卫星时间同步装置的安装及售后
    windowsU盘重装系统:操作流程
    vue安装正确流程
    win10以太网未识别的网络
    [UnityShader]unity中2D Sprite显示阴影和接受阴影
    [UnityShader]说厌了的遮挡显示
    [Unity]利用Mesh绘制简单的可被遮挡,可以探测的攻击指示器
    ConcurrentHashMap源码解读
    Vector底层原理
    LinkedList集合底层原理
  • 原文地址:https://www.cnblogs.com/jingRegina/p/12012055.html
Copyright © 2011-2022 走看看