给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
解题思路:
动态规划:计算到当前索引处为止,和最大的连续子数组,此时的和max(前一个最大子数组+当前元素,0+当前元素)
代码实现:
class Solution {
public int maxSubArray(int[] nums) {
int len=nums.length;
int max=nums[0];
for(int i=1;i<len;++i){
nums[i]+=Math.max(nums[i-1],0);
}
for(int i=0;i<len;++i){
if(max<nums[i]){
max=nums[i];
}
}
return max;
}
}