#
var maxSequence = function(arr) { console.info(arr); var min = 0, ans = 0, i, sum = 0; for (i = 0; i < arr.length; ++i) { sum += arr[i]; min = Math.min(sum, min); ans = Math.max(ans, sum - min); console.warn(sum, min, ans); } return ans; }
#
var maxSequence = function(arr) { if (arr.length == 0) { return 0; } var isPositive = true; var isNegative = true; var count = 0; for (var i = 0; i < arr.length; i++) { if (arr[i] >= 0) { count += arr[i]; isNegative = false; } else { isPositive = false; } } if (isNegative) { return count; } if (isPositive) { return count; } var max = 0; for (var i = 0; i < arr.length; i++) { var temp = arr[i]; if (max < temp) { max = temp; } for (var j = i + 1; j < arr.length; j++) { temp += arr[j]; if (max < temp) { max = temp; } } } return max; }
#test
console.warn(maxSequence([])); console.warn(maxSequence([-2, -1, -3, -4, -1, -2, -1, -5, -4])); console.warn(maxSequence([2, 1, 3, 4, 1, 2, 1, 5, 4])); console.warn(maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, 4]));