[英]Loop leads to Timeout in array rotation
嗨,如何交換技術(我的代碼)如何遭受超時,其中作為圓形數組
{(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;
(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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.