/**
* 优化的动态规划(舍弃All数组)
*/
private static void getSumOfSubArray05(int array[]) {
int n = array.length;
int End[] = new int[n];
//初始化:当数组中只有一个元素时
End[0] = array[0];
End[n - 1] = array[n - 1];
for (int i = 1; i < n; i++) {
//Ent[i]是数组array[i]前i个数最大子数组之和
End[i] = max(End[i - 1] + array[i], array[i]);
}
//从Ent[i]中找到最大值
//for (int i = 1; i < n; i++) {
// End[i] = max(End[i - 1], End[i]);
//}
//System.out.println("方法三:最大子数组之和为:" + End[n - 1]);
OptionalInt intOpt = Arrays.stream(End).max();
System.out.println("方法三:最大子数组之和为:" + intOpt.getAsInt());
}