JZ42 连续子数组的最大和
输入一个长度为n的整型数组a,数组中的一个或连续多个整数组成一个子数组。
求所有子数组的和的最大值。要求时间复杂度为 O(n).
提示:
1 <= n <= 500
-100 <= a[i] <= 100
public static int FindGreatestSumOfSubArray(int[] array) {
/*
连续子集最大和
for循环即可
如果前几位是小于0就可以不加
* */
if (array.length == 0 || array == null) {
return 0;
}
int curSum = 0;
int maxSum = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++) {
if (curSum <= 0) {
// 找到第一个大于0的数
curSum = array[i];
} else {
// 如果大于0就加上
curSum += array[i];
}
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}