題目:
輸入乙個整形陣列,陣列裡有正數也有負數。
陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。
求所有子陣列的和的最大值。要求時間複雜度為o(n)。
例如輸入的陣列為1, -2, 3, 10, -4, 7, 2, -5,和最大的子陣列為3, 10, -4, 7, 2,
因此輸出為該子陣列的和18。
舉例,例如有以下陣列:
-2, 5, 3, -6, 4, -8, 6
符合條件的子陣列為5,3, 則5,3相鄰的-2, -6滿足乙個條件:
以-2 結尾或者以-6開頭的子陣列之和必定小於等於0,否則5,3就不可能和最大
而且只要陣列不全是負數,只要滿足上面這個條件就必定是我們要找的子陣列。
c# codes as below:
using
system;
namespace ;
//int array = ;
//int array = ;
//int array = ;
//int array = ;
//int array = ;
int array = ;
int summax;
int array2 = new
runclass().getmaxsumstring(array,out summax);
console.writeline(summax);
console.writeline();
foreach (int i in array2)
console.readkey(); }
public
int getmaxsumstring(int array, out
int summax)
else
if (sum < 0)
if (array[i] > max)
max = array[i]; }
if (start == -1) ;
} int resultarray = new
int[end - start + 1];
for (int i = start; i <= end; i++)
return resultarray; }
} }
3 求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正有負。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 分析 由時間複雜度可見,應該是遍歷一次就能找出最大和子陣列的和。分析這樣的子陣列的特徵,可得 這個最大子串和的初始值一定是從正數開始的 反證法可證...
求子陣列最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。因為是o n 的複雜度,...
求子陣列的最大和
題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 本題最初為2005年浙江大學計算機系的考研題的最後一道程式設計題,在2006年裡包括google在內的很多知名公司都把本題當作面試題。由於本...