//题目描述:
//输入一个整型数组,数组里有正数也有负数.数组中的一个或多个连续多个
//连续的整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n)
//{6, -3, -2, 7, -15, 1, 2, 2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。
public class Solution
{
public int findGreatestSumOfArray(int[] nums)
{
if (nums == null || nums.length == 0)
{
return 0;
}
int greatSum = Integer.MIN_VALUE;
int sum = 0;
for (int num : nums)
{
sum = sum<= 0 ? num : sum + num;
greatSum = Math.max(sum,greatSum);
}
return greatSum;
}
}
动态规划
public static int getChildMax(int[] array)
{
int res = array[0];
int sum = array[0];
for (int i = 1; i < array.length; i++)
{
sum = max(sum + array[i], array[i]);
res = max(res, sum);
}
return res;
+}