指定された数値の配列から、指定された数値の前任者を見つける方法は? たとえば、指定された配列に が含まれ
てい-2,1,0,3
て、入力番号が0
の場合、先行は-2
です。
次のコードを書きました。
public static int getPredecessor(int[] inpArr, int key) {
int minDiff = key<=0 ? (key-inpArr[0]) : key;
int predecessor = key;
for(int i=0;i<inpArr.length;i++) {
if(inpArr[i] < key && (key - inpArr[i])<=minDiff)
{
minDiff = key - inpArr[i];
predecessor = inpArr[i];
}
}
return predecessor;
}
私が行ったことは、基本的に、提供された数値と配列内の各数値との最小の違いを追跡することです。最小の差が検出されるたびに、配列内のその特定の番号が前任者として格納されます。最後の return ステートメントが入力数値と同じ数値を返す場合は、指定された配列に先行ステートメントが見つからなかったことを意味します。
私の質問は次
のとおりです。コードを何らかの方法で最適化できますか? O(n) 時間と O(1) 空間の複雑さで実行されます。