建立一个同原数字相同长度的数组 以前数之和+现在数 与 现在数 进行大小的比对 判断子区间的开始的位置
public class S_053 {
public int maxSubArray(int[] nums) {
// *长度为1时
if(nums == null||nums.length == 1){
return nums[0];
}
// *新建数组是原数组相同长度
int sum[] = new int[nums.length];
// *和数组需要赋初值
sum[0] = nums[0];
// *初始值为第一个【和】的值
int max = sum[0];
for(int i=1;i<nums.length;i++){
// *前数组的和加上当前数与当前数进行比较
// *若当前数较大 则重置字数列和的起始位置
sum[i] = Math.max(nums[i],sum[i-1]+nums[i]);
if(max<sum[i]){
// 不断更新最大值
max = sum[i];
}
}
return max;
}
}