int[] array = new int[5]{5,7,8,15,20};
int TargetNumber = 13;
对于目标数字,我想在数组中找到最接近的数字。例如,当目标数字是 13 时,上面数组中最接近它的数字是 15。我如何在 C# 中以编程方式完成它?
最佳答案
编辑:调整了下面的查询以转换为使用 long
算法,这样我们就可以避免溢出问题。
我可能会使用 MoreLINQ的 MinBy
方法:
var nearest = array.MinBy(x => Math.Abs((long) x - targetNumber));
或者您可以只使用:
var nearest = array.OrderBy(x => Math.Abs((long) x - targetNumber)).First();
...但这将对整个集合进行排序,而您实际上并不需要它。对于小数组来说,这不会有太大区别,诚然......但与描述你实际上试图做的事情相比,它感觉不太正确do: 根据某种函数找到具有最小值的元素。
请注意,如果数组为空,这两个操作都会失败,因此您应该先检查一下。
关于c# - 在数组中找到最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120944/