Java 循环导致阵列旋转超时

Java 循环导致阵列旋转超时,java,arrays,for-loop,timeout,Java,Arrays,For Loop,Timeout,嗨,为什么交换技术(我的代码)会在循环数组中出现超时 {(i+旋转次数)%length}实现没有 a是一个int[] for (int i = 0; i < numberofrotation; i++) { for (int j = 0; j < a.length-1; j++) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } return a; for(int i=0;i

嗨,为什么交换技术(我的代码)会在循环数组中出现超时

{(i+旋转次数)%length}
实现没有

a
是一个
int[]

for (int i = 0; i < numberofrotation; i++) {
    for (int j = 0; j < a.length-1; j++) {
        temp=a[j];
        a[j]=a[j+1];
        a[j+1]=temp;
    }
}
return a;
for(int i=0;i
(i+旋转次数)%length是按旋转次数前进并环绕形成圆形阵列。 使用模,旋转次数减少到小于或等于数组长度,因此执行速度更快

给你一些想法

采用交换数组值的方法, 如果长度为10的数组交换n次,其中n是10的倍数, 表示模10=0,结果为原始数组

如果n的值不是10的倍数,您将看到数组值中的数组顺序发生变化。
您可以通过旋转n次获得结果,也可以通过旋转n mod 10次获得相同的结果

所以,若n=25,则交换数组25等于交换数组5次

25模10=5

类似地,如果n=13,则按13倍交换阵列将获得交换阵列3倍的相同结果

13模10=3

即使旋转数为整数。MAX_值且要旋转的数组长度为100,
旋转次数可以减少到整数。最大值%100,即47

超时是什么意思。您正在引用的另一个实现是什么?INTEGER阵列有多大?超时是否意味着被卡在循环中?@Ben此代码在数组中取大值并向左旋转。它工作正常,但当输入为4位数且旋转值也较大时,它会遇到“由于超时而终止”错误消息。如hackerank或Codibility?另一种方法(圆形阵列)适用于上述情况,而不是局部。