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?另一种方法(圆形阵列)适用于上述情况,而不是局部。