この問題が発生しました「このメソッドを実装して、特定の配列内の最大 2 つの数値の合計を返します。」
私はこの方法でそれを解決しました:
public static int sumOfTwoLargestElements(int[] a) {
int firstLargest = largest(a, 0, a.length-1);
int firstLarge = a[firstLargest];
a[firstLargest] = -1;
int secondLargest = largest(a, 0, a.length-1);
return firstLarge + a[secondLargest];
}
private static int largest(int s[], int start , int end){
if (end - start == 0){
return end;
}
int a = largest(s, start, start + (end-start)/2) ;
int b = largest(s, start + (end-start)/2+1 , end);
if(s[a] > s[b]) {
return a;
}else {
return b;
}
}
説明: メソッド「largeset」を実装しました。このメソッドは、指定された配列内の最大数を取得する責任があります。
同じ配列でメソッドを 2 回呼び出します。最初の呼び出しで最初に最大の数値が取得されます。それを変数に入れ、配列の「-1」数値に置き換えます。次に、最大のメソッドを 2 回呼び出します。
このアルゴリズムの複雑さを教えてくれる人がいますか? お願いします