Может ли кто-нибудь взять меня через то, что здесь происходит в алгоритме Кадане? Хотел проверить мое понимание. вот как я это вижу.
вы перебираете массив, и каждый раз, когда вы устанавливаете переменную ans на наибольшее значение, которое видно, до тех пор, пока это значение не станет отрицательным, тогда ans станет нулевым.
В то же время переменная суммы переписывается каждый раз через цикл, до максимума между ранее увиденными суммами или наибольшими "ans" до сих пор. Как только цикл закончен, вы получите самую большую сумму или ответ, увиденный до сих пор!
var sumArray = function(array) {
var ans = 0;
var sum = 0;
//loop through the array.
for (var i = 0; i < array.length; i++) {
//this is to make sure that the sum is not negative.
ans = Math.max(0, ans + array[i]);
//set the sum to be overwritten if something greater appears.
sum = Math.max(sum, ans)
}
return sum;
};