给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。
给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6
代码如下:
public int maxSubArray(int[] nums) {
// write your code
if (nums==null)
return 0;
int len = nums.length;
int[] a = new int[len];
int[] b = new int[len];
for(int i=0 ;i<len;i++){
if(i==0){
a[i]=b[i]=nums[i];
}else{
a[i]=Math.max(a[i-1]+nums[i],nums[i]);
b[i]=Math.max(a[i],b[i-1]);
}
}
return b[len-1];
}
这一题和LintCode41求最小子数组是一样的解题思路。