2016-10-13 22 views
-6

私はオブジェクトのリストを持っています。プロパティの1つが日付です。私は、特定の日付への参照を持つことによって、最も近い前の日付と最も近い次の日付を見つける必要があります。リストから最も近い前と次の日付を見つける

これを行うにはどの方法が最適でしょうか?可能であれば、私はリストを複数回ループすることを避けたいと思います。

答えて

2

直感的に来て、最も簡単な解決策:

  1. はあなた現在の日付を取る
  2. 日のために可能な最小値と前の最も近い日付を作成します。
  3. ループアレイを通って確認可能な最大値と次の最も近い日付ために同じ日未満現在の日付以降より前の最も近い日付ある場合、前の最も近い日付を再割り当てします。同様のロジックが次の日付に適用されます

これは、両方の日付を単一のループ(O(N))で見つけることができます。

もう一つのシンプルで透明な溶液が、アルゴリズム的に悪化(O(N * log N)):

  1. ソートあなたの配列
  2. はあなた現在の日付
  3. 前の項目と次の項目は明らかに最も近い以前になりますを探します最も近い次の日付

実装はあなた次第です。
これを実装してどのようにしているのかを教えてください。

関連する問題