ベクター内の数字の間の最大距離または差を見つける必要があります。たとえば、ベクトル[10, 5, 20, 45, 5, 5, 7]
の最初のパスでは、10と45の差が最大であるように見えます。しかし、2回目の反復では5と45の差が大きいので、アルゴリズムによって選択する必要があります。最大増加差
私は解決策を持っていますが、それはO(n^2)です。私の人生では、計算量がより少ない解決策があるかどうかはわかりません。
public void maxDistance(int inputArray[]) {
int trueMaxValue = 0, trueMinIndex = 0, trueMaxIndex = 0, tempMaxValue;
for (int i = 0; i < inputArray.length - 1; ++i) {
for (int j = i + 1; j < inputArray.length; ++j) {
tempMaxValue = inputArray[j] - inputArray[i];
if (tempMaxValue > trueMaxValue) {
trueMaxValue = tempMaxValue;
trueMinIndex = i;
trueMaxIndex = j;
}
}
}
}
また、配列内のどの2つの数値がmaxで使用されたかを知る必要があります。あなたは助けてもらえますか?私はそれについて考え続けるべきか、O(n^2)があなたができる最良のものなのかどうか分かりません。
このメソッドの予想される**出力**は何ですか?あなたは例を挙げている、と私は結論する:結果は40でなければならない(45と5の間のデルタ)。 – GhostCat
出力は最大差と、その最大値に寄与する2つの数値の位置(インデックス)になります。 – Stephany
私は、それが立っているように、解釈には開いていると思います。 '[10、5、50]'の出力はどれくらいですか? – NPE