【劍指offer簡單部分10】連續子陣列的最大和(java)
阿新 • • 發佈:2020-12-29
題目描述
輸入一個整型陣列,數組裡有正數也有負數。陣列中的一個或連續多個整陣列成一個子陣列。求所有子陣列的和的最大值。要求時間複雜度為 O(n).
分析
實現程式碼如下,必要部分都寫了註釋
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if (array == null || array.length == 0){
return 0;
}
int max = array[0]; //用來儲存當前的最大值
int currentSum = 0; //表示當前的和
for (int i=0; i < array.length; i++){
if (currentSum <= 0){
//當前和小於等於0,儲存當前的值,相當於後移效果
currentSum = array[i];
} else {
//當前和大於0,接著累加後面的元素
currentSum = currentSum + array[i];
}
//更換最大值
if (currentSum > max){
max = currentSum;
}
}
return max;
}
}