gpt4 book ai didi

java - 循环导致数组旋转超时

转载 作者:行者123 更新时间:2023-12-02 11:05:37 26 4
gpt4 key购买 nike

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

{(i+旋转次数)%length}实现不行?

aint[]

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;

最佳答案

(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 模 10 = 3

即使旋转次数为 Integer.MAX_VALUE 并且要旋转的数组长度为 100,旋转次数可以减少到 Integer.MAX_VALUE%100,即 47

关于java - 循环导致数组旋转超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com