[英]Finding the maximum of absolute numbers
有没有一种快速的方法可以将数组的所有成员转换为绝对成员并在其中找到最大数目? 例如在此数组中:
-100 25 43
最大值为43,但我想从代码中获得100。 有什么简单/快速的方法可以找到max而不管其符号如何? 还是我必须使用for循环将所有数组成员转换为绝对数组,然后在其中找到最大值?
尝试这个:
int[] array = {-100, 25, 43};
int max = array.Select(Math.Abs).Max();
这有效:
var numbers = new[] { -100, 25, 43 };
var absoluteMax = numbers.Select(x => Math.Abs(x)).Max();
我得到100
要求。
如果您的数字之一是int.MinValue
,请务必小心,然后会收到OverflowException
“对二进制补码数字的最小值求反无效。”
好想想。 您有一个数字列表。 您需要找到(绝对)最大值。 您能想到一种无需检查所有最大值即可找到最大值的方法吗? 如果检查前两个,您是否可以自信地得出结论,找到了最大值,而不检查阵列的其余部分? 你不能 因此,您需要检查每个数字。
一个基本的for
循环就可以了。 没有比循环更好的方法了。 当然,您可以使用LINQ或其他API对您隐藏循环,但是从根本上讲,它们就是这样做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.