2017-01-02 39 views
-2

我有一個問題,可以說我有一個數組:獲得最大的從C#中的子陣列

var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56}; 

我想從指數得到最大值(可以說指數4),怎麼辦我這樣做? 有什麼樣:

array.fromIndex(4).max() 

也,我試圖去簡單做

(array + 4).max() 

但得到一個錯誤

「操作符 '+' 無法應用於」

這是爲什麼?

謝謝!

+4

'array.Skip( 4)。最大()'? – yaakov

+1

你所有的4個問題都得到了相當好的回答。您應該通過將其標記爲正確答案來返還該優惠。因爲你從來沒有做過[當我回答我的問題時該怎麼做?](http://stackoverflow.com/help/someone-answers)文章應該有幫助。 [接受答案是如何工作的](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)文章甚至有一張照片。美好的一天 –

回答

3

也,我試圖去簡單做 (array + 4).max() 但得到一個錯誤「運算符‘+’無法應用」,這是爲什麼?

在C#中array不是您可以計算的指針。所以運營商+沒有被定義爲執行這樣的操作。

如果你要開始你某個索引搜索最大值可以跳過所有的值到這一點:

int maxValue = array.Skip(4).Max(); 

編輯: 由建議@jdphenix的啓發評論:

如果你想要更多地控制你想要搜索的最大範圍,那麼Take方法可能會有很大的幫助。這種組合將允許你設定子陣列的範圍:如果你想指定的起點和終點指標就應該是這樣的

var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56 }; 
int startIndex = 4; 
int numberOfElements = 3; 
array.Skip(startIndex).Take(numberOfElements).Max(); 

int startIndex = 4; 
int endIndex = 7; 
array.Skip(startIndex).Take(endIndex - startIndex).Max(); 
+2

此外,考慮到標題中的問題(如何從一個範圍內獲取最大值),提到可能的結合'Take()'和Skip()'是很有用的。 – jdphenix

+0

@ jdphenix好點,補充了信息 –