class Solution {
public int maxSubArray(int[] nums) {
int[] dp=new int[nums.length];
dp[0]=nums[0];
int res=nums[0];
for(int i=1;i<nums.length;i++){
if(dp[i-1]>0){
dp[i]=dp[i-1]+nums[i];
}else{
dp[i]=nums[i];
}
if(dp[i]>res){
res=dp[i];
}
}
return res;
}
}
// class Solution {
// // 动态规划
// public int maxSubArray(int[] nums) {
// // 如果不要求空间复杂度,可以建一个动态规划数组。如果要求,只使用一个额外变量记录动态规划数组former值即可
// int res=nums[0];
// int former=nums[0];
// int cur=nums[0];
// for(int i=1;i<nums.length;i++){
// cur=nums[i];
// if(former>0){
// cur=nums[i]+former;
// }
// if(cur>res){
// res=cur;
// }
// former=cur;
// }
// return res;
// }
// }