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();
...しかし、これではコレクション全体がソートされてしまいますが、これは本当に必要ありません。小さい確かに配列...しかし、あなたが何を表現しているかを説明するのと比べると、ちょっと違う気がします実はやろうとしていること: 何らかの関数に従って最小値を持つ要素を見つけること。
配列が空の場合、これらは両方とも失敗するので、最初にそれを確認する必要があります。