题目链接
这里对于每个数字有两种状态
1.从前j-1个数的和的基础上继续加和[i-1]+nums[i]:
2.不要前j-1个数nums[i];
public int maxSubArray(int[] nums) {
if(nums.length==1){
return nums[0];
}
int[] dp=new int[nums.length];
for(int i=0;i<nums.length;i++) {
dp[i]=0;
}
dp[0]=nums[0];
for(int i=1;i<nums.length;i++) {
dp[i]=Math.max(nums[i], dp[i-1]+nums[i]);
}
int max=-999;
for(int i=0;i<nums.length;i++){
max=Math.max(max,dp[i]);
}
return max;
}