/* * 数组索引为 (0, n - 1) * 假设第 i 项到第 i + x 项最大 (i, i + x) i >= 0 && i <= n - 1 && x >= 0 && x <= n - 1 - i * 则 第 i 项到第 i + x - 1 项 的和 肯定 >= 0 并且第 i + x 项 >= 0 * 即 E(i, i + x - 1) >= 0 * 先定义两个变量 * sum(连续 x 项的和) maxSum(最大 连续 y 项的和) * 初始化 第一项为最大值 */ functionarrMaxSum(arr){ var sum = arr[0]; var maxSum = sum;
for(var i = 1, len = arr.length; i < len; i++){ if(sum <= 0){ sum = arr[i]; }else { sum += arr[i]; } maxSum = sum > maxSum ? sum : maxSum; }