题解
当前面连续和为负数时,要放弃,下一个位置为起始位置。变量sum记录最大的子数组和。count不断变化,当前面连续子数组和小于0时,count置于0,相当于放弃前面的子数组,下一个位置设置为新子数组的起始位置。
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length==1)
return nums[0];
int sum=Integer.MIN_VALUE;
int count=0;
for(int i=0;i<nums.length;i++){
count+=nums[i];
sum=Math.max(sum,count);//sum一直记录目前的最大值
if(count<0){
count=0;//前n个数的和小于0,需要重置初始位置,下一个数为初始位置。
}
}
return sum;
}
}