'use strict'
function getMaxSubSum(arr){
let a = 0;
let b = 0;
let c = 0;
for(let i of arr){
a += i;
if(b < a){
c = a;
}else if(b > a){
a = 0;
}
b += i;
}
return c;
}
let arr = [1,2,3,5,-66,22,333,-2223,213,1122];
console.log(getMaxSubSum(arr));
На входе массив чисел, например: arr = [1, -2, 3, 4, -9, 6].
Задача: найти непрерывный подмассив в arr, сумма элементов в котором максимальна.
Функция getMaxSubSum(arr) должна возвращать эту сумму.
Например:
getMaxSubSum([-1, 2, 3, -9]) = 5 (сумма выделенных)
getMaxSubSum([2, -1, 2, 3, -9]) = 6
getMaxSubSum([-1, 2, 3, -9, 11]) = 11
getMaxSubSum([-2, -1, 1, 2]) = 3
getMaxSubSum([100, -9, 2, -3, 5]) = 100
getMaxSubSum([1, 2, 3]) = 6 (берём все)
Если все элементы отрицательные – ничего не берём(подмассив пустой) и сумма равна «0»:
getMaxSubSum([-1, -2, -3]) = 0
Попробуйте придумать быстрое решение: O(n2), а лучше за О(n) операций.
Хотелось бы посмотреть на ваше решение 0_0