/**
* 进一步优化的动态规划
* 为了进一步降低空间复杂度,我们可以定义两个变量用来保存方法三中的
* End[i-1]和All[i-1]
*/
private static void getSumOfSubArray04(int array[]) {
int n = array.length;
int nEnd = array[0]; //前i个元素的最大子数组之和
int nAll = array[0];//包含最后一个元素的子数组之和(前i+1个元素的最大子数组之和)
for (int i = 1; i < n; i++) {
nEnd = max(nEnd + array[i], array[i]);
nAll = max(nEnd, nAll);
}
System.out.println("方法四:最大子数组之和为:" + nAll);
}