public int FindGreatestSumOfSubArray(int[] array) {
//dp[i] 以 i 结尾的数组最大和
if(array == null){
return 0;
}
if(array.length == 1){
return array[0];
}
// int[] dp = new int[array.length];
// dp[0] = array[0];
// int result = array[0];
// for(int i = 1;i < array.length - 1; i++){
// dp[i] = Math.max(dp[i-1] +array[i], array[i]);
// result = Math.max(dp[i],result);
// }
// return result;
int result = 0;
int temp = 0;
int max = Integer.MIN_VALUE;
for(int i = 0;i<array.length;i++){
result += array[i];
if(result > max){
//累加后发现大于
max = result;
}
if(result < 0){
//累加小于0,重置 ,如果不重置,后面累加如果数字为负数,将更小,为正数,也变小,不如不加,这样还大,直接取后面的数
result = 0;
}
}
return max;
}
}