public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
if(array == null || array.length == 0) {
return 0 ;
}
if(array.length == 1) {
return array[0] ;
}
//使用滚动数组,进行空间优化
int f[] = new int[2] ;
int old = 0 ;//上一次
int cur = 1 ;//当前
f[old] = array[0] ;
int max = Integer.MIN_VALUE ;//记录计算过程中的最大值
for(int i = 1 ; i < array.length ; i ++) {
f[cur] = Math.max(array[i] , f[old] + array[i]) ;
if(f[cur] > max) {
max = f[cur] ;
}
old = cur ;//上一次脚标,更新为当前
cur = 1-cur ;//当前更新为上一次
}
return max ;
}
}