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