【问题标题】:How to Rotate Left the elements of an array [duplicate]如何向左旋转数组的元素[重复]
【发布时间】:2018-05-05 11:16:15
【问题描述】:

我想将这些元素向左旋转。请帮帮我...

public class RotateLeft
{ 
     public static void main(String args[]) 
     { 
         int array[] ={1,2,3};
         int myarray[]= new int[3];               
         //Here is my logic                     
         for(int i=0; i<myarray.length-1; i++)
         {                         
             myarray[i]=array[i+1];
             myarray[i+1]=array[i];
         }
         System.out.print(myarray[0]+" "+myarray[1]+ " "+ myarray[2]);  
    }
}

输出应该是 2 3 1

【问题讨论】:

  • 数组中只有 3 个元素吗?
  • 只要尺寸小且固定,您就可以对解决方案进行硬编码(我想这也会缩短执行时间)。如果大小是可变的,请查看通用解决方案的可能重复项。

标签: java arrays rotation logic


【解决方案1】:

试试这个:

int[] myarray = new int[array.length];
for (int i = 0; i <= myarray.length - 1; i++) {
    if (i != myarray.length - 1) {
        myarray[i] = array[i + 1];
    } else {
        myarray[i] = array[0];
    }
}

【讨论】:

  • 错误的值从myarray[0]“在最后”发送到最后一项。想想myarray[0]第一次旅行通过循环时会发生什么...
  • Kevin Anderson,我对这个 for 循环没有任何问题,我用多个测试用例测试过它工作正常,你能用例子解释你的观点吗?
  • 是的,这很好用,无论数组是空的、只包含一个项目还是多个项目。
  • 我的错;出于某种原因,我认为它在自身内部旋转array,这需要将array[0] 的初始值保存在一个临时变量中。
猜你喜欢
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
  • 2021-06-05
  • 1970-01-01
  • 2012-08-10
相关资源
最近更新 更多