嗨,交换技术(我的代码)如何遭受超时问题,其中作为圆形数组{(i+number of rotation)%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;
1 回答
函数式编程
TA贡献1807条经验 获得超9个赞
(i +旋转数)%length 将按旋转数前进并环绕以形成圆形阵列。使用模数转数减少到小于或等于数组的长度,因此执行速度更快
给你一些想法...
采用交换数组值的方法,如果将长度10的数组交换n次,其中n是10的倍数,则意味着n mod 10 = 0,结果是原始数组。
如果n的值不是10的倍数,则您将看到数组值的数组顺序更改。
您可以通过旋转n次获得结果,或者通过旋转n mod 10次可以获得相同的结果
因此,如果n = 25,那么将数组交换25等于将数组交换5次
25 mod 10 = 5
类似地,如果n = 13,则将数组交换13次将得到与数组交换3次相同的结果
13 mod 10 = 3
即使转数为Integer.MAX_VALUE并且要旋转的数组的长度为100,也可以将转数减少为Integer.MAX_VALUE%100,即47。
添加回答
举报
0/150
提交
取消