Algoritmo para encontrar la suma máxima en un subarreglo
Dado un arreglo de enteros y un número, escribe una función llamada maximaSumaEnSubarreglo, la cual encuentre la suma máxima en un subarreglo con la longitud del número enviado a la función.
El arreglo debe consistir de números consecutivos de elementos en el arreglo original.
Ejemplos:
([100,200,300,400],2) => 700
([-3,4,0,-2,6,-1],2) => 5
([2,3],3) => null
function sumaMaximaEnSubarreglo(a, b) {
// retorna false si el arreglo es menor a lo requerido
if (a.length < b) {
return null;
}
// suma maxima
let sumaMaxima = 0;
// toma la suma de la primera porción del arreglo
for (let i = 0; i < b; i++) {
sumaMaxima += a[i];
}
// suma previa
let sumaPrevia = sumaMaxima;
// recorre el resto del arreglo
for (let i = b; i < a.length; i++) {
// calcula la nueva suma
let nuevaSuma = sumaPrevia + a[i] - a[i - b];
// actualiza la suma maxima
if (nuevaSuma > sumaMaxima) {
sumaMaxima = nuevaSuma;
}
// actualiza la suma previa
sumaPrevia = nuevaSuma;
}
// retorna la suma máxima
return sumaMaxima;
}