这个题目就是典型的动态规划问题,也就是对于当前的元素num[i],如果它前面相邻的连续和flag[i-1]>0,那么它的最大连续和就是num[i]+flag[i-1];如果flag[i-1]<0,那么它的最大连续和就是本身num[i]。然后可以在更新完相应的flag[i]后,直接和result进行判断,取最大值。
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
int[] flag = new int[array.length];
flag[0] = array[0];
int result = flag[0];
for(int i = 1; i < array.length; ++i) {
flag[i] = flag[i-1] > 0 ? array[i]+flag[i-1] : array[i]; //更新
if(flag[i] > result) //与result进行判断
result = flag[i];
}
return result;
}
}