給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
思路:上來就暴力,不行的。考慮用一個maxsum記錄最大值,用sum,記錄每次相加後的和,得到sum後,如果sum>maxsum,則maxsum = sum,否則什麼都不做(什麼都不做)。如果sum小於零,說明新加的這個數太小了,拖累了前面的所有值,sum清零重來。
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if(null == array || array.length == 0){
return 0;
}
int sum= array[0];
int max = array[0];
for(int i = 1; i < array.length; i++){
if(sum< 0){
sum= 0;
}
sum+= array[i];
max = Math.max(max, sum);
}
return max;
}
}