簡體   English   中英

求最大絕對數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM