动态规划: dp[i] = dp[i-1]>0?dp[i-1]+nums[i]:nums[i];
dp[i]表示从0到i包含i的最大长度。
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++){
dp[i] = dp[i-1]>0?dp[i-1]+nums[i]:nums[i];
res = Math.max(res,dp[i]);
}
return res;
}
public int maxSubArray(int[] nums){
if(nums.length == 1){
return nums[0];
}
int sum = nums[0];
int res = nums[0];
for(int i = 1;i<nums.length;i++){
sum = sum<0?nums[i]:sum+nums[i];
res = Math.max(res,sum);
}
return res;
}