class Solution {
public int maxSubArray(int[] nums) {
int len = nums.length;
int [] dp=new int[len];
dp[0]=nums[0];
for(int i=1;i<len;i++){
if(dp[i-1]<0){
dp[i]=nums[i];
}else{
dp[i]=dp[i-1]+nums[i];
}
}
int res=dp[0];
for(int i=1;i<len;i++){
res=Math.max(res,dp[i]);
}
return res;
}
}
如何定义子问题(定义状态)
我们 不知道和最大的连续子数组一定会选哪一个数,那么我们可以求出 所有 经过输入数组的某一个数的连续子数组的最大和。