2017-02-22 3 views
0

私は入力として数値をとり、並べ替えられた順序で並べ替えられていないリストから前後の数値を出力する関数を記述しようとしています。例えば、リストが[29,1,49,8]の場合、関数(8)を呼び出すと[1,29] を返す必要があります。最小の平均複雑度を持つ可能な解はソートを行うだけです。リストは無作為に100の固定サイズで生成されますソートされていないソートされていないリストからの数値の大小を即座に指しますか?

+0

要求された値より小さい(または大きい)数値がない場合はどうなりますか?つまり、あなたのリストが '[29、1、49、8]'でコールが 'function(50)'ならばどうでしょうか?また、リストごとに複数の関数呼び出しがありますか? –

+0

ああ!私はそのシナリオについて考えることさえしませんでした、そして、要素が存在するかどうかをまずチェックしてから推測しなければなりません。私は関数があると仮定していますが、呼び出すかもしれないし、機能しないかもしれません。 –

答えて

1

並べ替える必要はありません。 配列をパスして、best_delta_positiveとbest_delta_negativeを、必要に応じて見つかったインデックスとともに維持してください。

+0

リストが[29,22,65,8]でデルタネガティブがない場合は動作しますか?リストは無作為に生成されます –

+0

恐ろしい!これはその状況でうまくいくでしょう。ありがとうMalcolm –

関連する問題