leetcode-连续子数组的最大和
题目链接:添加链接描述
给定一个数组,寻找出其中的和最大的连续子数组
这是一个DP的题目,不过他的DP比较简单。首先,使用dp[i]表示前i位(包含第i位)的子数组最大和,我们会发现,nums[i]是否加上取决于前面的dp[i]是否为正数,如果是负数的话,没必要加上去,由nums[i]重新开始,向后延伸即可,如果是正数,则可以加上,因为这个对于最终的子数组和最大,是有好处的,所以来说,编码方式就很明显了。
class Solution {
public int maxSubArray(int[] nums) {
int res = nums[0];
for(int i = 1; i < nums.length; i++){
if(nums[i-1]>=0) {
//如果前面的子数组和会对后面的结果产生增长的效果
//就加进去
nums[i] = nums[i-1] + nums[i];
}
if(res < nums[i]) {
//更新最大值
res = nums[i];
}
}
return res;
}
}