题目链接
思路:从0开始遍历数组,准备一个curSum计算当前和,sum用来计算最大和。每次遍历到一个数,curSum等于curSum与此数相加,sum等于当前sum和curSum中哪个更大,如果此时curSum结果小于0,则此时的curSum肯定不会是最大和,让curSum=0重新开始相加。遍历结束,即可找出最大子序和。
public int maxSubArray(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
int curSum = 0;
int sum = nums[0];
for (int i = 0; i < nums.length; i++) {
curSum += nums[i];
sum = Math.max(curSum, sum);
if (curSum < 0) {
curSum = 0;
}
}
return sum;
}