分析:
连续子数列和,关键是连续,当前最大值dp[n]与前一个最大值dp[n-1]的关系是:
当dp[n-1]>0时,dp[n] = dp[n-1] + arr[n];
当dp[n-1]<0时,dp[n] = arr[n];
用变量max记录之前的最大值dp[n]。
public class Solution {
public int FindGreatestSumOfSubArray(int[] array) {
int max = array[0];
int sum = 0;
int len = array.length;
for(int i = 0;i < len;i++){
sum = sum > 0 ? sum + array[i] : array[i];
max = sum > max ? sum : max;
}
return max;
}
}
提交结果:答案正确 运行时间:20ms 占用内存:9412KB 使用语言:Java 用例通过率:100.00%