思路
从前往后遍历,最大的连续子序列的和是由当前元素和之前的最大连续子序列的和叠加在一起形成的。如果之前的最大连续子序列的和大于零,我们可以继续累加,如果小于零,则需要舍去之前的子序列,重新从当前的数字开始累加。时间复杂度为O(n)
public static int FindGreatestSumOfSubArray(int[] array) {
int end=Integer.MIN_VALUE;
int sum=0;
for(int i=0;i<array.length;i++){
if(sum<0){
sum=array[i];
}else {
sum=sum+array[i];
}
if(sum>end){
end=sum;
}
}
return end;
}