簡體   English   中英

循環導致數組旋轉超時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM