为了账号安全,请及时绑定邮箱和手机立即绑定

循环导致数组旋转超时

循环导致数组旋转超时

Helenr 2021-04-09 14:15:21
嗨,交换技术(我的代码)如何遭受超时问题,其中作为圆形数组{(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


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信