/** 输入数组: 1 -2 3 10 -4 7 2 -5 输出:18 计算每一个合以后,只有 [3,10,-4,7,2]是最大的合为18 1+-2+3+10+-4+7+2 =17 -2+3+10+-4+7+2 = 16 3+10+-4+7+2 = 18 10+-4+7+2=15 -4+7+2 5 7+2 9 2 2 */ // 所以每一个值和前一个值进行相加取最大值替换当前索引位置的数组值, // 并添加一个变量最大值,把每一个最大值和此比较,如果大于则替换最大值变量 // 代码如下 public static int sumMaxValue(int[] nums) { int res = -Integer.MAX_VALUE; for (int i = 1; i < nums.length; i++) { nums[i] = Math.max(nums[i] + nums[i - 1], nums[i]); res = Math.max(nums[i], res); } if (nums.length == 1) { res = nums[0]; } return res; }