亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

循環導致數組旋轉超時

循環導致數組旋轉超時

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 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號