配列内の最も近い値を見つける 質問する

配列内の最も近い値を見つける 質問する
int[] array = new int[5]{5,7,8,15,20};

int TargetNumber = 13;

ターゲット番号に対して、配列内で最も近い番号を見つけたいです。たとえば、ターゲット番号が 13 の場合、上記の配列内でそれに最も近い番号は 15 です。これを C# でプログラム的に実現するにはどうすればよいでしょうか?

ベストアンサー1

long編集:オーバーフローの問題を回避するために、以下のクエリを調整して算術演算を使用するように変換しました。

私はおそらくさらに詳しくMinBy方法:

var nearest = array.MinBy(x => Math.Abs((long) x - targetNumber));

もしくは、あなたできた次のように使用します:

var nearest = array.OrderBy(x => Math.Abs((long) x - targetNumber)).First();

...しかし、これではコレクション全体がソートされてしまいますが、これは本当に必要ありません。小さい確かに配列...しかし、あなたが何を表現しているかを説明するのと比べると、ちょっと違う気がします実はやろうとしていること: 何らかの関数に従って最小値を持つ要素を見つけること。

配列が空の場合、これらは両方とも失敗するので、最初にそれを確認する必要があります。

おすすめ記事