int[] array = new int[5]{5,7,8,15,20};
int TargetNumber = 13;
对于目标数字,我想找到数组中最接近的数字。例如,当目标数字为 13 时,上面数组中最接近它的数字是 15。我如何在 C# 中以编程方式实现这一目标?
编辑:已调整以下查询以转换为使用long
算术,这样我们就可以避免溢出问题。
我可能会用MoreLINQ's MinBy
method:
var nearest = array.MinBy(x => Math.Abs((long) x - targetNumber));
Or you could只需使用:
var nearest = array.OrderBy(x => Math.Abs((long) x - targetNumber)).First();
...但这将对整个集合进行排序,而您确实不需要。对于一个人来说不会有太大区别small数组,诚然......但与描述你的内容相比,它感觉不太正确actually尝试做:根据某个函数找到具有最小值的元素。
请注意,如果数组为空,这两种方法都会失败,因此您应该首先检查这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)