给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组是数组中的一个连续部分。
1.
public class Solution13 {
public int maxSubArray(int[] nums) {
// 1.验证输入
if (nums == null || nums.length == 0) {
return 0;
}
// 2. 初始化变量
// currentSum用于存储当前子数组的和
// maxSum用于存储迄今为止发现的最大子数组的和
int currentSum = nums[0];
int maxSum = nums[0];
// 3. 遍历数组,从第二个元素开始
for (int i = 1; i < nums.length; i++) {
// 这行代码决定了是否将当前元素 nums[i] 添加到当前子数组中,还是重新开始一个新的子数组。
// 如果加上当前元素后子数组的和更大,就加上;否则,从当前元素开始新的子数组
currentSum = Math.max(nums[i], currentSum + nums[i]);
maxSum = Math.max(maxSum, currentSum);
}
return maxSum;
}
}