Idea: Planificación dinámica DP
Fórmula de recursión DP [i] = max (DP [i-1], A [i]);
// input [-2,1,3, -1, -6] // output: [1,3] 4 funciones maxSum (arr = []) { let tempSum = 0 ; let maxSum = 0 ; for (let i = 0; i <arr.length; i ++ ) { tempSum + = arr [i]; if (tempSum> maxSum) { maxSum = tempSum; } else if (tempSum <0 ) { tempSum = 0 ; } } return maxSum; }}
Puedes usar el método JS Math para simplificar el código
función maxSum3 (arr = []) { let tempSum = 0 ; let maxSum = 0 ; for (let i = 0; i <arr.length; i ++ ) { tempSum = Math.max (tempSum + arr [i], arr [i]); maxSum = Math.max (tempSum, maxSum) } return maxSum; }}
O imprima para definir una matriz temporal dp
función maxSum2 (arr = []) { let dp = []; for (let i = 0; i <arr.length; i ++ ) { if (dp [i - 1]> 0 ) { dp [i] = dp [i - 1] + arr [i]; } else { dp [i] = arr [i]; } } return Math.max (... dp) }