我幾乎完成了一項家庭作業任務,乘以多項式並且必須簡化它的相似術語,並且按照從最高級到最低級的順序。 2條語句也已經排序。我的程序完美運行,但得到結果需要很長時間(比如在我的機器上運行2分鐘),而我用來提交它的網站顯示超出了時間限制。對於實際的乘法(這裏沒有顯示),它需要很少的時間,但類似術語的組合需要一段時間。它發生在1個鏈表具有2條語句相結合,即:乘以多項式/簡化類似的術語
2 2 2 1 1 1 //means 2x^2 + 2x + x
*
3 2 5 1 1 0 //means 3x^2 + 5x + 1
,我把它變成2 2 2 1 1 1 3 2 5 1 1 0進行處理。
任何人都知道我怎麼能加快這一點?謝謝。
public MyLinkedList add(MyLinkedList combinedList) {
MyLinkedList tempCombinedList = new MyLinkedList();
MyLinkedList resultList = new MyLinkedList();
//check highest power now that its sorted.
tempCombinedList=null;
tempCombinedList = new MyLinkedList();
int highestPower=0;
//we need to find highest power
for(int l=2;l<=combinedList.size();l=l+2) {
if((Integer)combinedList.get(l)>highestPower) {
highestPower=(Integer)combinedList.get(l);
System.out.println("highest power is "+highestPower);
}
}
int tempAddition=0;
while(highestPower!=-1) {
for(int z=2;z<=combinedList.size();z=z+2) {
if((Integer)combinedList.get(z)==highestPower) {
tempAddition=tempAddition+(Integer)combinedList.get(z-1);
}
}
if((tempAddition!=0)) { //we arent allowed to have a 0 coefficient in there....
resultList.add(tempAddition);
resultList.add(highestPower);
}
else if(((tempAddition==0)&&(highestPower==0))) { //unless the exponent is 0 too
resultList.add(tempAddition);
resultList.add(highestPower);
}
tempAddition=0; //clear the variable for the next roud
highestPower--; //go down in power and check again.
}
return resultList;
}
你的標題說「添加」,但你的第一句話說「乘」。這是什麼? – 2011-02-18 19:55:32
放入一些System.out.println(System.currentTimeMillis()),並計算出花費的時間。 – mellamokb 2011-02-18 19:57:05