演算法 最大連續子陣列和

2021-09-11 22:35:31 字數 639 閱讀 1851

題目描述:給定n個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為: max,1<=i<=j<=n

例如,當(a[1],a[2],a[3],a[4],a[5],a[6],a[7])=(1,-2,11,-4,8,-5,-2)時,最大子段和為15。

public class test 

int currentsum = 0;

int max = 0;

for (int i = 0; i < array.length; i++) else

if(currentsum>max)

}return max;

} }

設定乙個最大值,乙個臨時的最大值。 這裡的currentsum理解為上一次的最大值,初始的時候認為最大值為0,有可能陣列為全負數。 第一次進入開始分兩種情況, 1.第乙個數為小於等於零的數,現在最大值為0,下一次迴圈就會把下乙個數設為當前最大值。 2.第乙個數為大於零的數,最大值比零大,賦值給max。(有種在林子裡找最好看的鳥,看到暫時最好看的設為最大值,直到遇到更好看的,就把它取代)

最大連續子陣列和

題目描述 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值,要求時間複雜度為o n 例如輸入的陣列為 1,2,3,10,4,7,2,5 和最大的子陣列為 3,10,4,7,2 因此輸出為該子陣列的和18。思路 採用貪婪法...

最大連續子陣列和

輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值,要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。第乙個想法肯定就是如果能夠把陣...

最大連續子陣列和

給定乙個整數陣列,元素的值有正有負。定義 連續子陣列和 為連續幾個陣列的元素的和,求最大的連續子陣列和。已知這個值在int能夠表示的範圍內。無腦暴力做就是列舉所有的子陣列,o n 2 然後對於每個子陣列求和,自然就找出最大的了,複雜度總共是o n 3 能否優化?想想 做了重複多餘的事情了?沒錯,就是...