嗨,交換技術(我的代碼)如何遭受超時問題,其中作為圓形數組{(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
提交
取消