私はcompareTo
とComparator
で最大の行の数を見つけるために単項探索のプログラムを書いています。関数呼び出しの回数を減らす
私はコードを記述しましたが、技術的には問題ないはずです。ただし、ランタイムが高すぎます。それは28以下でなければなりません。
ヒントは、ランタイムを短縮するために関数が何度も繰り返し呼び出されないように変数を作成することでした。しかし、私はそれをするのが難しいです。助けてもらえますか?ここに私のコードです。
import java.util.Comparator;
public class UnimodaleSuche {
public static <T extends Comparable<T>> T suche (UnimodaleListe <T> Liste, int s, int e){
if (s == e){
return Liste.hole(e);
} else if(s+1 == e){
if (Liste.hole(s).compareTo(Liste.hole(e)) < 0) {
return Liste.hole(e);
} else {
return Liste.hole(s);
}
}
int m = (s+e)/2;
Liste.hole (m).compareTo(Liste.hole(m+1));
if (Liste.hole (m).compareTo(Liste.hole(m+1)) < 0){
return suche(Liste, m+1, e);
}else{
return suche(Liste, s, m);
}
}
public static <T> T suche (UnimodaleListe <T> Liste, int s, int e, Comparator <T> c) {
if (s == e) {
return Liste.hole(e);
} else if(s+1 == e){
if (c.compare(Liste.hole(s), Liste.hole(e)) < 0) {
return Liste.hole(e);
} else {
return Liste.hole(s);
}
}
int m = (s+e)/2;
c.compare(Liste.hole(m), Liste.hole(m+1));
if (c.compare(Liste.hole(s), Liste.hole(e)) < 0) {
return suche(Liste, m+1, e,c);
}else{
return suche(Liste, s, m, c);
}
}
}
をちょうどノート:、変数のための小文字を使用してくださいしてください。ドイツ語の文法はJavaでは問題ではありません(慣習と矛盾する場合は英語もありません)。 'Liste.hole'を見てみると、' Liste'はクラスであり、静的メソッド呼び出しであるとみなされます。 – maaartinus