给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
解题思路:我们首先对于数组中的每一个元素,有两种选择,加入当前子序列,自己新成立一个子序列。判断采用哪种方法,主要比较presum+x与x的大小。若加入总和较大,则加入否则,不加入,新开辟一个子序列,最后更新当前总和以及最大总和。遍历结束后,返回最大和。
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length == 0 || nums == null){
return 0;
}
int sum = nums[0];
int max = sum;
for(int i = 1;i<nums.length;i++){
sum = sum < 0 ? nums[i] : sum+nums[i];
max = Math.max(max,sum);
}
return max;
}
}